原理
ssh 免密登陆主要通过密钥认证实现,基本过程如下
- 机器1生成密钥对并将公钥发给机器2,机器2将公钥保存
- 机器1要登录机器2时,机器2生成随机字符串并用机器1的公钥加密后,发给机器1
- 机器1用私钥将其解密后,把随机字符串发回给机器2
- 机器2验证随机字符串无误,机器1成功登录
Linux 免密登陆另一台 Linux
假设有两台 Linux, 机器1、机器2。如果我们需要让 机器1 免密登陆 机器2,需要如下操作
生成密钥对
在 机器1 下生成密钥对
ssh-keygen
Enter passphrase (empty for no passphrase) 输入私钥的使用密码,回车则表示不使用私钥密码。如果设置了私钥的密码,即使私钥被盗,不知道密码也无法使用,代价就是自己每次使用私钥是,也要输入密码。为了使用方便我这里不设置密码。
same passphrase again 再次输入密码,同上
查看生成的密码
tree ~/.ssh -C -pf
id_rsa是私钥 ,id_rsa.pub是公钥
查看公钥内容
cat ~/.ssh/id_rsa.pub
将公钥发给其他机器
ssh-copy-id 机器2的ip
去机器2上查看
cat ~/.ssh/authorized_keys
内容应该与机器1中的公钥无误
免密登陆其他机器
完成上面步骤后,机器1就可以免密登陆机器2了
在机器1上
ssh 机器2的ip
免密登陆自己
有时候某些程序可能需要这个功能,实现方法跟上面一样,将公钥追加到 authorized_keys 文件中
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys