# SSH(Secure Shell)介绍



## SSH 安装

- 查看是否已安装:
 - CentOS:`rpm -qa | grep openssh`
 - Ubuntu:`dpkg -l | grep openssh`

- 安装:
 - CentOS 6:`sudo yum install -y openssh-server openssh-clients`
 - Ubuntu:`sudo apt-get install -y openssh-server openssh-client`

## SSH 配置文件常用参数

- 配置文件介绍(记得先备份):`sudo vim /etc/ssh/sshd_config`
 - Port 22 #默认指定 22 端口,可以自己修改
 - Protocol 2,1 #指定了 SSH 协议版本,目前 SSH 只有两个版本 2 和 1
 - PasswordAuthentication yes #是否开启密码验证,因为 SSH 也可以设置秘钥类授权登录的方式,如果用这种方式我们可以考虑关掉密码登录的方式。
 - PermitEmptyPasswords no #是否允许密码为空,与上面参数配合用。
 
## SSH 允许 root 账户登录

- 编辑配置文件(记得先备份):`sudo vim /etc/ssh/sshd_config`
 - 允许 root 账号登录
    - 注释掉:`PermitRootLogin without-password`
    - 新增一行:`PermitRootLogin yes`
    
## SSH 密钥登录

- 生成秘钥和公钥文件,命令:`sudo ssh-keygen`,在交互提示中连续按三次回车,如果看得懂交互的表达,那就根据你自己需求来。默认生成密钥和公钥文件是在:/root/.ssh。
- 进入生成目录:`cd /root/.ssh`,可以看到有两个文件:id_rsa (私钥) 和 id_rsa.pub (公钥)
- 在 .ssh 目录下创建 SSH 认证文件,命令:`touch /root/.ssh/authorized_keys`
- 将公钥内容写到SSH认证文件里面,命令:`cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys`
- 修改SSH认证文件权限,命令:
   - `sudo chmod 700 /root/.ssh`
   - `sudo chmod 600 /root/.ssh/authorized_keys`
- 重启服务:`sudo service ssh restart`
- 设置 SSH 服务默认启动:`sudo sysv-rc-conf ssh on`

现在 SSH 客户端可以去拿着 SSH 服务器端上的 id_rsa,在客户端指定秘钥文件地址即可,这个一般由于你使用的客户端决定的,我这里推荐的是 Xshell 软件。

## SSH 资料

- <http://www.jikexueyuan.com/course/861_1.html?ss=1>