我正在尝试从网页上的另一台服务器上启动perl脚本,我遇到了plink的问题:从IUSR_用户运行时,它似乎不记得主机密钥。
我设法减少了这个问题:
print "Content-Type:text/plain\n\n";
open(PLINK, "| \"C:\\Program Files\\PuTTY\\plink.exe\" -pw sanitized Administrator\@serveurftp.a.b.c whoami") or die "Can't fork: $!";
sleep(1);
print PLINK "y\n";
close(PLINK);
从网页调用此脚本时,我总是这样:
The server's host key is not cached in the registry. You
have no guarantee that the server is the computer you
think it is.
The server's rsa2 key fingerprint is:
ssh-rsa 2048 cb:eb:dc:1b:9e:1c:6b:fa:63:fb:2e:ba:2c:61:26:c4
If you trust this host, enter "y" to add the key to
PuTTY's cache and carry on connecting.
If you want to carry on connecting just once, without
adding the key to the cache, enter "n".
If you do not trust this host, press Return to abandon the
connection.
Store key in cache? (y/n) serveurftp\administrator
我应该只是第一次得到这个,之后只有“serveurftp \ administrator”,但看起来plink在从IIS运行时无法存储主机密钥。
你们对如何解决这个问题有什么想法吗?
答案 0 :(得分:2)
在这种情况下,应用程序通常会尝试从控制台(或在Unix中说,tty)读取y / n响应,而不一定是从标准输入读取,因此程序可能没有注册“y”管道到它的响应。
一些解决方法可能是:
答案 1 :(得分:0)
此处提供的解决方案(感谢Dean Grant):
Accept server host key when automating SSH session using PuTTY Plink
答案 2 :(得分:0)
我在tcl脚本中生成plink.exe(以及Expect命令),所以我无法使用管道因为tcl不承认它。我通过产生plink,推出一个“y”,退出,然后再次产生plink来实现同样的目的。
#Push a "y" to overcome ssh host key challenge
spawn plink -ssh 192.168.1.1 -l username -pw password
send -s "y\r"
send -s "exit\r"
#ssh into host
spawn plink -ssh 192.168.1.1 -l username -pw password