1. ssh key的好处?
- 如果采用传统密码登录的话,每次登录都会弹出类似这样的警告:
There were 12345 failed login attempts since the last successful login.
- 你可以用这条命令看看到底是哪些人曾经想登门拜访过:
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那几个命令是否成功执行。