我有一台主计算机和四台从计算机。我在主计算机上生成了 rsa 公钥/私钥。然后我将 publickey( id_rsa.pub
) 复制到从机上,如下所示authorized_keys
。
当我在主 PC 终端上像这样调用 SSH 时,它不会询问密码:
ssh –o UserKnownHostsFile=/dev/null –o StrictHostKeyChecking=no hduser@slave1
我编写了这个脚本来自动登录从属机器而无需询问密码。
SERVER_LIST=`cat /home/hduser/slaves` # slave1, slave2 ...
USERNAME=hduser
for host in $SERVER_LIST; do
ssh –t –o UserKnownHostsFile=/dev/null –o StrictHostKeyChecking=no -l ${USERNAME} ${host};
done
当我使用此脚本时,SSH 会询问从属密码。当我使用带有以下选项的 SSH 时,我收到此消息-vv
:
我更改了主 PC 和从属 PC 的权限。
sudo chmod 700 -R ~/.ssh
sudo chown hduser ~/.ssh
它仍然要求输入密码。我遗漏了什么?我该如何解决?
答案1
尝试使用该-i
参数。来自 man:
-i identity_file
Selects a file from which the identity (private key) for RSA or
DSA authentication is read. The default is ~/.ssh/identity for
protocol version 1, and ~/.ssh/id_rsa and ~/.ssh/id_dsa for pro-
tocol version 2. Identity files may also be specified on a per-
host basis in the configuration file. It is possible to have
multiple -i options (and multiple identities specified in config-
uration files).
然后您可以指定每个主机要使用的密钥。
答案2
该脚本以某种方式查找根目录以发送私钥。 它在复制id_rsa
到目录id_rsa.pub
下后起作用。/home/hduser/.ssh/
/root/.ssh/
sudo cp -av /home/hduser/.ssh/id_rsa /root/.ssh/
sudo cp -av /home/hduser/.ssh/id_rsa.pub /root/.ssh/