SSH 免密码登录设置

假设有 A, B 两机,都是 Linux 系统,实际上我用的是 Ubuntu, A 能通过 ssh 登录 B:

ssh zhangsan@hostB

再输入密码,即可登录 B.

可以考虑将 A 系统的用户 zhangsan 的 ssh pub key 加入到 B 的接受列表中,实现免密码登录。具体步骤如下:

1. 在 A 和 B 中都安装好 ssh 相关软件

$ sudo apt-get update
$ sudo apt-get install ssh
$ sudo apt-get install rsync

2. 生成密钥

在 A 系统,以用户 zhangsan 登入,并执行

$ ssh-keygen -t rsa

此命令以交互模式执行,会询问生成的密钥文件的名称(默认是 id_rsa),为了不覆盖以前生成的,可以另外指定密钥文件的名称。

此命令执行后,会在 ~/.ssh/ 中生成一对密钥:id_rsa 和 id_rsa.pub,前者是私钥,后者是公钥。

公钥的文本内容类似这样的:

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDWXgsi3/v67ZI+0j4cEAWJXezgaQNmf3xWRekFTfzanXdVM6MlhlRn9k+BkfkaRwUuxtD9O/+W/BqD3Nqer+Fijyu1fqPd1g+WgZhYYEhDml6KXT6youBIRF0X/t9qkpkHuU7WpWdBR5/h15UojujeRzTF8U4hC6Y1xRH1ferNSaXc95Wv50ZLbSDFhKhyWGz1/R7l+/JVi8JZggJK0hzauRU4f7x8lq0jED5782i/vsr9Df4EpxQIQ++oJi79uHGt3nQpLmgF8mMbCqlmh3PWVbw8r1IsuSDacxCz1bukJ+q/XjMG05m58rtKaOWRLFatsrqNF03OR59gE9Dv3bKh hadoop@cydebian7

3. 添加认证

将 A 的 ssh pub key 即 id_rsa.pub 的内容,附加到 B 的 /home/hadoop/.ssh/authorized_keys 中。

至此,A 通过 ssh 登录 B 时,就无需密码了。