plink重定向无法正常工作

时间:2014-05-13 22:24:13

标签: redirect ssh stdout stdin plink

我正在Delphi(用于Windows)中编写一个控制台应用程序,该应用程序在后台使用plink.exe通过ssh连接到设备(重定向stdin和stdout)。

我的包装器正在使用plinkremote组件(http://www.delphipraxis.net/70989-komponente-fuer-ssh-verbindung-6.html)。

要启动连接,我让我的包装器向用户询问用户名和密码,然后运行命令[plink -pw“password”user @ server],它连接并通过我的包装器连接到服务器。< / p>

一切都按预期工作,但有一个例外:如果我输错密码,最新版本的plink(版本0.63)会出现“交互式键盘身份验证”并要求输入密码。那时我的包装器停止工作。无论我输入的是什么都没有被转发到服务器,唯一的出路是关闭命令提示窗口。 我找到了一种方法来禁用这种“交互式身份验证”(通过保存禁用的putty-session并在我的包装器中加载该会话),但plink仍然需要输入密码,我的包装器也以相同的方式停止工作。

在过去的几天里,我试图找出它停止工作的原因。我不确定输入或输出是否被重定向到其他地方(仅当plink要求输入密码时)。 如果无法进行身份验证,我希望plink只关闭连接,然后我可以立即尝试再次连接,希望正确输入密码并连接。先前版本的plink(版本0.60)就是这样做的。当然我更喜欢使用最新的plink版本,所以我想弄清楚当plink无法连接给定凭证时会发生什么。

我进行了搜索,无法找到解决此问题的方法 - 唯一一个听起来类似问题的问题没有得到解答(https://stackoverflow.com/questions/19458241/redirecting-the-dev-tty-for-a-plink-command)。

有没有人知道可能出现什么问题或如何完全禁用plink中的密码问题?

谢谢!

1 个答案:

答案 0 :(得分:0)

这是一个很好的plink参考:

http://the.earth.li/~sgtatham/putty/0.58/htmldoc/Chapter7.html

以及此处的标准批处理文件代码

structure: Debug\plink -[connection type] [ipaddress] -l [username] -pw [password]

example: Debug\plink -ssh 192.168.1.1 -l sudo -pw MyWeakestPasswordEver