SSH免密登陆
SSH免密登陆
在面试的时候,有个面试官问过一个问题:如果你是一个安全运维人员,你会做什么来提升SSH安全性?
当时有提到说要使用publickey的形式登入,而不要使用密码登入的形式。但前者其实自己不是很熟练,因此在这里记一下使用publickey免密登入的过程。
1. 流程图
图:SSH公钥匙登入过程
先偷个懒,画了个流程图,文字部分以后再补😏
2. 具体命令
本地生成一对密钥
1 | $ ssh-keygen -o |
接着输入所生成密钥对的位置,小心不要覆盖;然后需要选择输入密钥的口令(passphrase),可以留空
1 | Generating public/private rsa key pair. |
此时,我们已经在指定位置生成一对密钥了,例如上面就是在/Users/xxxxx/.ssh/id_rsa
。
在服务端开启公钥登入
登入服务器,对文件/etc/ssh/sshd_config
进行编辑,开启远程公钥登入:
1 | $ vim /etc/ssh/sshd_config |
加入或者将以下的配置行解除注释:
1 | PubkeyAuthentication yes |
保存修改后,重启ssh服务,例如Debian系统使用命令:
1 | $ service sshd restart |
本地公钥发送
对于上面的流程图中第三步,我们需要本地生成的密钥对中的公钥发送到服务器,我们使用命令:
1 | $ ssh-copy-id -i id_rsa.pub [email protected] |
如上面的命令,我们用ssh-copy-id
命令,用-i
参数指定发送的公钥,后面则是需要传送的服务器用户名、IP地址。输入密码验证后,我们看到响应信息:
1 | Number of key(s) added: 1 |
显示公钥发送成功,接下来就可以尝试免密(公钥)登入。
尝试登入
直接ssh尝试登入,输入密钥的口令(如果在本地生成是设置了的话需要,留空则不需要)即可登入
1 | $ ssh [email protected] |