SSH免密钥互信及企业案例
SSH远程免密码:
原理简述:客户端 创建公钥和私钥,公钥是锁,私钥是自己留在客户端的钥匙。 客户端将公钥(锁)发出到服务端,以后自己就能用客户端本地的私钥进行登陆,不用输入密码!
1.客户端,和服务端都 执行命令后生成公钥和私钥 (客户端IP: 130, 服务端IP :131):
ssh-keygen -t rsa -C "ssh-client" <----------------->ssh-keygen
其中-C 是用来做描述的, 可以不用这个参数
密钥类型可以用 -t 选项指定。如果没有指定则默认生成用于SSH-2的RSA密钥。
所以 可以把命令简写为: ssh-keygen
2.客户端 将公钥 发送给服务端的特定位置,并改名。(需要在服务端 mkdir /root/.ssh/)
scp /root/.ssh/id_rsa.pub root@192.168.126.131:/root/.ssh/authorized_keys
或者
ssh-copy-id -i .ssh/id_rsa.pub root@192.168.126.131
3.修改服务端收到的公钥权限(IP:131)
chmod 600 /root/.ssh/authorized_keys
4.客户端ssh登陆服务端实现免密码 (第一次登陆需要输入yes)
或
ssh -l root 192.168.126.131
注意:要保证.ssh和authorized_keys都只有用户自己有写权限。否则验证无效。(今天就是遇到这个问题,找了好久问题所在),其实仔细想想,这样做是为了不会出现系统漏洞。
===============================================
公司的一个需求:
ABCD等多台服务器 需要传输文件到 S服务器上,但需要免交互。
解决方案:
ABCD等多台服务器上 利用ssh-keygen命令生成公钥 和 私钥, 将其中一台服务器的公钥/root/.ssh/id_rsa.pub传输到 S服务器 改名为 ./ssh/authorized.key;然后 同样在BCD服务器上创建公钥和私钥,通过查看公钥文件,然后将每台服务器的公钥文件内容拷贝到 S服务器的 authorized.key 文件中。
解决问题!