Linux 双向 SSH 免密登录
原理
双向,顾名思义,双方互通,此处的意思是多台 linux 两两免密登录。双向比单向多了些操作,单向只需把某一个linux的公钥发送给其他linux即可,而双向要实现集群中的每一台机器都保存其他所有机器的公钥。
步骤
假设,你有两台机器,ip
分别为A
和B
:
总共分为三步:
- 生成公钥
- 将A机器的公钥拷贝至B机器
- 将B机器的公钥拷贝至A机器
生成公钥
如下命令生成公钥,默认会在~/.ssh/
下生成id_rsa
和id_rsa.pub
。先检查一下机器是否已有公钥,如果没有再执行:
ssh-keygen -t rsa
-t 指定算法
-f 指定生成秘钥路径
-N 指定密码
拷贝公钥
cd ~/.ssh
scp id_rsa.pub root@B:/root/.ssh/authorized_keys #此命令在A机器执行,目的将公钥发送至B机器
scp id_rsa.pub root@A:/root/.ssh/authorized_keys #此命令在B机器执行,目的将公钥发送至B机器
scp: 加密的方式在本地主机和远程主机之间复制文件
参数:
- 源文件:指定要复制的源文件。也可以是远程地址
- 目标文件:目标文件。格式为
user@host:filename(文件名为目标文件的名称)
。
验证
ssh B #在A机器上,看是否免密登陆B
ssh A #在A机器上,看是否免密登陆B
如果发现设置免密登陆,还需要输入密码,那么检查一下/root
.ssh
authorized_keys
目录和文件的权限。
chmod 600 authorized_keys
chmod 700 .ssh
如果authorized_keys文件、$HOME/.ssh目录 或 $HOME目录让本用户之外的用户有写权限,那么sshd都会拒绝使用 ~/.ssh/authorized_keys 文件中的key来进行认证的。