我如何使用寄期望于密码的ssh连接。

说的密码是2P @提供ssword 和ssh命令是 SSH me@127.0.0.1

我会做的与期望的使其输入时,它说:

密码

me@127.0.0.1's密码:结果 ?

使用SSH密钥对的正确操作不是因为我将不得不使用ssh(SCP)把服务器上的密钥,这将要求输入密码的选项。

有帮助吗?

解决方案

我总是用“适当”的解决方案,但我用期望在其他情况下。

此处我发现以下建议:

#!/usr/local/bin/expect
spawn  sftp  -b cmdFile user@yourserver.com
expect "password:"
send "shhh!\n";
interact

其他提示

这岂不是更容易使用公共密钥认证,并使用一键无密码?

作为源计算机上的用户这样做是为了使RSA密钥

ssh-keygen -t rsa

现在的〜/ .ssh / id_rsa.pub复制到目标机器,并将它附加到目标用户的authorized_keys文件

您最快的前进的道路(除非你想成为一个Tcl专家,这将是不寻常的... ... 2009年)可能是使用autoexpect。这里的手册页:

http://expect.nist.gov/example/autoexpect.man.html

总之,火起来autoexpect,运行ssh会话,完成了你需要做的,停止autoexpecting,然后通过所产生的乱敲打键盘,直到它的工作原理:)我假设你不需要任何更多比快速的黑客攻击,让你的钥匙整理出来,然后,嗯,这听起来像你与心中有数了。

和有这个问题已经包含例如接近你所追求的。

Cygwin的具有autoexpect只是没有在bin包。运行setup.exe并搜索期望并检查源复选框。你会看到结果树在/ usr / src目录,并在那里有一个期望/期待/ examples目录。在那里住了autoexpect脚本的副本。

关键解决方案将无法工作......因为这些密钥只能由人运行ssh来读取。在XP中,你不能创建正确的权限密钥结构。所以,SSH将无法读取它们。这可能有变化,但最后我检查仍不不行。

我敢肯定它是不可能做你想要做的事。这提示从TTY读取密码大多数* nix应用程序直接,而不是标准输入,所以你不能管。密码可以,如其他人所说,配置SSH不提示输入密码,作为解释的此处

我downvoted没有明显的原因后,我去了,在expect命令做了一点研究,发现它具有发送到/ dev / tty的,而不是标准输入,一个send_tty命令你想要的东西可能实际上做......我以前不知道这个功能的。我还是建议把服务器上的关键,但是。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top