在脚本中调用 SSH 时会询问密码

在脚本中调用 SSH 时会询问密码

我有一台主计算机和四台从计算机。我在主计算机上生成了 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

-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/

相关内容