我正在运行一个自动化脚本来自动执行登录,并使用plink在远程目标上运行其他一些命令。我使用以下方法进行自动登录并保存RSA密钥:
user@ubuntu~$ echo -e 'y\n' | plink root@<target ip> -pw <password> "pwd"
此命令在通过命令行运行时保存密钥,但在使用脚本运行时,在保存RSA密钥时不一致。考虑正确传递的用户名和密码,它会将错误消息提示为Connection refused
,因为在提示输入中未提取“y”。
很多时候,它会一次又一次地提示接受密钥,因为我的脚本中有许多同时连续的plink命令。理想情况下,它不应该多次要求用户输入。我检查了'sshhostkeys'文件,它不存在于〜/ .putty文件夹中,这是每次运行plink时提示用户输入的原因。
之前有人遇到过这个问题吗?对此的任何修复,或任何黑客/解决方法?
P.S:使用expect脚本,或使用putty手动保存配置文件,或手动运行plink命令并保存密钥一次,将被排除(不予考虑)。
答案 0 :(得分:0)
获得解决方案,实际上问题是分配给$HOME/.putty
目录的权限。该文件夹的所有权信息也是root,因此当我尝试运行时
user@ubuntu~$ echo -e 'y\n' | plink root@<target ip> -pw <password> "pwd"
由于权限问题导致密钥未被保存在.putty文件夹中,因此我反复收到'(y / n)'的提示。上面的命令一旦运行就无法创建文件sshhostkeys
文件,因为它一次又一次地要求保存密钥,每次它都尝试保存密钥但由于没有保存密钥而无法保存有root权限。通过为所有其他(sudo chmod 707 ~/.putty)
分配rwx权限来解决此问题,或者其他方法可以通过'chown'将所有权信息更改为运行脚本的用户。