Yet another bootstrap theme.

2019-12-30
服务器部署之ssh

关于ssh

可以通过 ssh 连接到远程服务器. 在服务器端启动 sshd 服务后, 客户端可以使用 ssh 登录到服务器, 还能配置免密登录服务器, vscoderemote Development 就能通过 ssh在远程服务器编译调试. 这里主要介绍 ssh 服务的部署和问题排查.

安装方法

windows

OpenSSH 客户端和服务器是 Windows 10 1809 的可安装功能。
若要安装 OpenSSH,请启动设置,然后转到应用>应用和功能>管理可选功能
查看此列表,看 OpenSSH 客户端是否已安装。 如果没有,则在页面顶部选择“添加功能”,然后:

  • 若要安装 OpenSSH 客户端,请找到“OpenSSH 客户端”,然后单击“安装”。
  • 若要安装 OpenSSH 服务器,请找到“OpenSSH 服务器”,然后单击“安装”。

安装完成后,请返回“应用”>“应用和功能”>“管理可选功能”,你应当会看到列出的 OpenSSH 组件。
本文主要介绍 linux 下 ssh 的部署, windows 具体安装方案请参考 [使用OpenSSH管理Windows]

linux

linux 安装方法如下表格, 也可直接运行 sudo yum install -y opensshsudo apt-get install -y openssh 直接安装客户端和服务器.

System client server
Debian/Ubuntu Run sudo apt-get install openssh-client sudo apt-get install openssh-server
RHEL / Fedora / CentOS Run sudo yum install openssh-clients sudo yum install openssh-server && sudo systemctl start sshd.service && sudo systemctl enable sshd.service

服务器部署

  1. 在自己家目录 ~/ 创建 .ssh 目录, 并设置权限 700

    mkdir -p ~/.ssh
    chmod 700 .ssh
    
  2. 生成私钥和公钥, 执行下面命令会在.ssh 目录下创建id_rsa 私钥文件和 id_rsa.pub 公钥文件.
    可以这样理解, 公钥是很多一样的锁, 私钥是这些锁的钥匙, 将公钥id_rsa.pub 放到远端服务器, 本地存放私钥, 就可以自动使用私钥开启远方的”门”了

    ssh-keygen -t rsa -C "yourmail@mail.com" 
    
  3. 如果有远端服务器 A, 本地服务器 B, 要使用 B ssh 到 服务器A 上, 执行如下流程

    • 设置服务器 A .ssh 目录的权限

      mkdir -p ~/.ssh
      chmod 700 .ssh
      
    • 将公钥存放到远端服务器 A 的 .ssh 目录下. 然后执行如下语句将ssh 文件写入 authorized_keys 并设置其权限

      cat id_rsa.pub >> authorized_keys
      chmod 600 authorized_keys
      chmod 644 id_rsa.pub
      
    • 将私钥ssh_rsa存放到本地服务器 B 的 .ssh 目录, 修改其权限

      chmod 600 id_rsa
      
    • 将如下语句添加到 ~/.bash_profile, 是用来自动启动 ssh-agent 服务管理私钥来认证公钥.

      if [ -z "$SSH_AUTH_SOCK" ]
      then
         # Check for a currently running instance of the agent
         RUNNING_AGENT="`ps -ax | grep 'ssh-agent -s' | grep -v grep | wc -l | tr -d '[:space:]'`"
         if [ "$RUNNING_AGENT" = "0" ]
         then
              # Launch a new instance of the agent
              ssh-agent -s &> .ssh/ssh-agent
         fi
         eval `cat .ssh/ssh-agent`
      fi
      
    • 临时运行ssh-agent 服务, 并添加私钥

      eval `ssh-agent -s`
      ssh-add ~/.ssh/id_rsa
      
  4. 经过上面的设置, 就可以通过 ssh 链接到远端服务器了, 使用命令免密码登录服务器了

    ssh -p port username@hostname  
    -p 指定端口 port, 一般是22, 没有修改可以不要 -p 参数
    username 是你的用户名, 比如 mio@10.0.4.110, 就是在 10.0.4.110 上的  mio 用户
    如下
    ssh mio@10.0.4.110
    
  5. windows 可以使用 %%/.ssh/config 来配置客户端免密码登录, 在 config 文件下键入如下内容:

    Host 10.0.4.110
      HostName 10.0.4.110
      User mio
      IdentityFile ~/.ssh/id_rsa
    

注意

要注意密钥和目录的权限, 不然会登录不上, 报错. 各个目录权限如下

名称 类型 权限 权限数值 简介
~/.ssh 服务器目录 rwx—— chmod 700 服务器配置目录
~/.ssh/authorized_keys 服务器认证文件 rw——- chmod 600 服务器公钥写入文件
~/.ssh/id_rsa.pub 服务器公钥文件 rw-r–r– chmod 644 服务器公钥
~/.ssh 客户端目录 rwx—— chmod 700 客户端配置目录
~/.ssh/id_rsa 客户端私钥文件 rw——- chmod 600 客户端私钥文件
.ssh/config 客户端配置文件 rw-r–r– chmod 644 客户端配置文件

扩展

  1. scp 的使用

    scp 本地用户名 @IP 地址 : 文件名 1 远程用户名 @IP 地址 : 文件名 2
    
    -v 和大多数 linux 命令中的 -v 意思一样 , 用来显示进度 
    -P 选择端口 . 注意 -p 已经被 rcp 使用 . 
    -r 复制目录
    -4 强行使用 IPV4 地址 . 
    -6 强行使用 IPV6 地址 .
    例子:#scp -p 4588 remote@www.abc.com:/usr/local/sin.sh /home/administrator
    

安装时碰到问题

当服务器和客户端都按照上面流程配置后, 一般时不会有什么问题的, 如果此时链接服务器还需要密码, 做为服务器开发人员, 要耐心分析问题, 产生这种情况肯定时有原因的, 可以从一下几个方向来查看问题

  1. 查看客户端日志, 使用ssh -v 选项可以查看链接时的详细日志, 如果觉得不够详细, 还可以再加一个 v, ssh -vv mio@10.0.4.110, 如果出现以下日志, 则可能表示链接的服务器端口不对, 可以执行 ss -anopt | grep 22 看服务器端口是否开开着, 或者进入/etc/ssh/sshd_config 查看服务器配置的端口字段 Port 为什么, 或者 ps aux | grep sshd 查看服务是否启动

    debug1: connect to address 119.27.172.153 port 22: Connection refused
    
  2. sshd 服务可以使用 service sshd status 查看状态, 如果没在运行中, 可以执行service sshd start 启动服务

  3. sshd 的配置在 /etc/ssh/sshd_config 中, 可以将日志等级设置为 INFO, LogLevel INFO, 然后在 /var/log/secure 中查看登录日志
  4. 如果有别的不明白的, linux的 man page 对命令的描述是第一首资料, 可以仔细阅读, 如 man sshd.
  5. 再有具体问题可以 google 之, 搜索问题提示的关键字

PS:

  1. 可以修改 /etc/hosts 将远程主机设置别名, 比如添加如下行:

    10.0.4.110 mio
    

    就可以直接使用 ssh cmio@mio 登录到 10.0.4.110

  2. 服务端可以禁止密码登录, 修改 /etc/ssh/sshd_config#PasswordAuthentication no 前面的# 取消来设置只能 使用 sshkey 登录, 注意这时候就不能使用密码登录了.

    vim /etc/ssh/sshd_config
    # 删除下面配置前面的  `#`
    PasswordAuthentication no
    
Read More

2016-08-29
Unity3d笔记

  1. GameObject.CreatePrimitive():创建一个原始游戏对象,七参数可以设置为立方体、球体、圆柱体等系统默认的游戏对象。
  2. AddComponent():用于给该游戏对象添加一个组件。组件没有自身对应的删除方法,需要使用父类执行Object.Destroy()才能删除

    1
    2
    3
    GameObject obj = GameObject.Find("Cube");  
    obj.AddComponent("Test"); //给对象添加Test脚本
    Destroy(obj.GetComponent("Test")); //删除对象的Test脚本
  3. renderer.material.color:设置渲染材质的颜色或贴图

  4. trasform.position:设置该游戏对象的位置
Read More

2016-08-29
VBA常用语法

  1. 数组下标是从0开始的
  2. sheet下标是从1开始的
  3. 获取dict的方法

    1
    2
    Dim dic  
    setdic = CreateObject("Scripting.Dictionary")
  4. dict添加数值方法

    1
    dic.Add key, value
  5. 遍历dict 方法

    1
    2
    3
    For Each Data In dict
    MsgBox (dict.Item(Data) & ":" & Data)
    Next
  6. vba用 '&'来连接字符串

Read More

2016-08-29
Blog 模板配置

由于之前的主题landscape(存放在如D:\GitHub\Blogs\themes中)没有自带评论功能,暂时换pacman主题,它使用第三方评论系统多说。关于自定义评论功能再议。
打开git shell,切换到你的D:\GitHub\Blogs目录下,使用命令安装主题:

git clone https://github.com/A-limon/pacman.git themes/pacman

完成后,打开D:\GitHub\Blogs_config.yml,修改主题为pacman。

theme: pacman

再按照前面介绍的生成静态页面方法,生成后,将public文件夹下内容上传到git hub项目文件中。测试看看效果。

hexo g #是generate的简写,将md文件编译成html静态页面
hexo s #是server的简写启动server

Read More

2016-08-29
使用Hexo搭建个人博客

hexo,一个基于Node.js的静态博客程序。能够将Markdown文件生成静态页面,输出至其根目录的public文件夹下。可以将生成的public文件的所有内容,上传至GitHub的blog项目下。通过类似pickmio.github.io(pickmio改为你自己的GitHub用户名)的网址就能访问你的Blog了。网上也有很多搭建方案,但是我自己在配置却碰到些问题,记录下来希望能有帮助。

下载安装GitHub

点击GitHub下载页面安装过程按照提示一步一步来。GitHub的安装是先下载一个下载器再在线安装。在下载过程中可能会失败,下载进度条并没有完全就中断了。可以按下Windows键,在搜索程序和文件中键入Internet 选项(Internet后有空格)选择Internet 选项,选中 安全选项卡,选择受信任的站点→点击站点按钮。弹出的窗口中的文本框中输入 github-windows.s3.amazonaws.com点击添加。再试着点击GitHub下载页面安装。如果没有GitHub账号,可参考GitHub的帮助文档

#下载安装Node.Js
点击进入Node.Js下载页面。一路下一步即可。

#安装Hexo
配置好GitHub后,双击桌面的Git Shell ,使用npm安装Hexo。

npm install -g hexo

需要安装一些插件,请使用npm安装:

npm install hexo-renderer-ejs –save
npm install hexo-renderer-stylus –save
npm install hexo-renderer-marked –save

Read More