首页 > 技术文档 > Linux > SSH免密登录的原理
2017
12-06

SSH免密登录的原理

Linux SSH免密登录的原理:就是在Server端存放一个Client有访问权限的身份认证。具体方法是在Client上用ssh-keygen命令生成一对公/私钥,私钥放在Client上,公钥上传到每一个Server端。这样我们每当想要从Client操作Server端的时候,凭借保存好的私钥就能直接通过认证,实现免密登录了。

下面以CentOS为例,Server(192.168.1.11),Client(192.168.1.12),现想Client通过ssh免密码登录到Server。

1. 在Client上生成公/私钥对
# ssh 192.168.1.12
# ssh-keygen -t rsa -P ”
-P ” 就表示空密码,这个命令会在/root/.ssh目录下下生成私钥id_rsa和公钥id_rsa.pub。

SSH免密登录的原理 - 第1张  | ZAOPERATION

2. 把Client的id_rsa.pub复制到Server端下
# scp -P 22 /root/.ssh/id_rsa.pub root@192.168.1.11:/root/.ssh/id_rsa.pub

3. Server端把从Client上复制的id_rsa.pub添加到/root/.ssh/authorzied_keys,并修改权限
# cat id_rsa.pub >> /root/.ssh/authorized_keys
# chmod 600 ~/.ssh/authorized_keys
# chmod 700 ~/.ssh

4. 设置 SSH,打开密钥登录功能
# vim /etc/ssh/sshd_config
RSAAuthentication yes
PubkeyAuthentication yes
PermitRootLogin yes // root用户能否通过SSH 登录
PasswordAuthentication no //当完成全部设置,并以密钥方式登录成功后,再禁用密码登录:

最后,重启 SSH 服务:
# service sshd restart
# ssh 192.168.1.11
Last login: Wed Dec 6 16:31:29 2017 from 192.168.1.12

第一次登录是时要你输入yes,然后Client就可以无密登录Server端了。

总结:
1. Client有私钥,Server端要有Client端的公钥
2. 这个公钥/私钥对Client端产生

最后编辑:
作者:北街
身高八尺,腰围也是八尺!
捐 赠如果您觉得这篇文章有用处,请支持作者!鼓励作者写出更好更多的文章!