Linux 免密登陆

688 阅读1分钟

原理

ssh 免密登陆主要通过密钥认证实现,基本过程如下

  1. 机器1生成密钥对并将公钥发给机器2,机器2将公钥保存
  2. 机器1要登录机器2时,机器2生成随机字符串并用机器1的公钥加密后,发给机器1
  3. 机器1用私钥将其解密后,把随机字符串发回给机器2
  4. 机器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