1. ssh key 的好处?
如果采用传统密码登录的话,每次登录都会弹出大量的非法登录警告:
grep "Failed password for invalid user" /var/log/secure | awk '{print $13}' | sort | uniq -c | sort -nr | more
采用 ssh key 登录后,安全性提高了。 其次,不用再输入密码,方便。
2. 方法(以 root 用户为例)
ssh-keygen -t rsa
此命令在 /root/.ssh 生成了 2 个文件:id_rsa 为私钥,id_rsa.pub 为公钥,此处如果是普通用户的话,则目录是 /home/用户名 /.ssh
cp /root/.ssh/id_rsa.pub /root/.ssh/authorized_keys
chown -R 0700 ~/.ssh
chown -R 0644 ~/.ssh/authorized_keys
chown -R root:root /root
修改 ssh 配置文件:
nano /etc/ssh/sshd_config
修改这几个地方:
RSAAuthentication yes
StrictModes no
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication yes
3. Windows 客户端配置 PuTTY 使用证书登录
PuTTY 是一个很常见的 SSH 客户端,PuTTY Key Generator 是其附属的专门用于生成密钥的工具(注意这是两个独立的软件)
- 制作用于 Putty 的私钥 下载 id_rsa 到本地 下载 PuTTY 和 PuTTY Key Generator: (下载地址: https://www.puttykey.com/download-putty/)
- 点击 File – Load private key(All Files .)
- 导入 id_rsa 文件;
- 点击 Save private key 按钮,命名并生成 ppk 文件, 这个 ppk 文件就是用于 PuTTY 的私钥。
- 设置 PuTTY 实现用证书登录
- Putty→Session:输入 Host Name 或者 IP Address ;
- Putty→Connection→Data:输入 Auto-login username(自动登陆用户名);
- Putty→Connection→SSH→Auth:在 Private key file for authentication 选择私钥文件;
- Putty→Session:Saved Session:输入某个名称保存,以后直接双击该名称就可登录。
4. Windows 客户端 Bitvise 的设置
与 PuTTY 不同,Bitvise 的私钥生成并不像 PuTTY 那样需要一个独立的程序,设置上要简单一些。
- 打开 Bitvise
- Host 填服务器地址
- Username 填 root
- Inital method 选 publickey
- 点击 Host key manager ,点击 More ,选 Remove All
- 点击 Client key manager ,点击 Import 按钮,文件类型选所有 All Files 类型,直接导入我们从- 服务器下载的 id_rsa 文件即可
- 回到主界面在 Client key 里选择:Profile 1
- 点击 Log in 按钮登陆即可。
5. 完全屏蔽密码登录
当我们确认 SSH KEY 登录没有任何问题后,就可以将密码登录取消了:
还是修改 ssh 配置文件:
nano /etc/ssh/sshd_config
修改这个地方:
PasswordAuthentication no
6. FAQ
- SSH 完全无法使用了
答:有可能是把 PubkeyAuthentication no 证书登录,和 PasswordAuthentication no 密码登录都设成了 no ,这样无论是采用公钥登录还是密码登录都会被拒绝,这就比较麻烦了,需要接上显示器键盘本地登录。(这也是为什么在 SSH KEY 登录没有完全测试成功之前,不能轻易将密码登录取消的原因)
- 所有设置都仔细检查,没有问题,但还是报错:Authentication failed. The key has been rejected 。
答:一般来说是目录权限问题,仔细检查 chmod 那几个命令是否成功执行。