一尘不染

通过纯bash将密码传递给ssh

linux

我想通过sshbash脚本传递密码(是的,我知道我可以使用ssh密钥,但这不是我想要的)。

我发现了一些正在使用的解决方案,expect但由于它不是标准的bash工具,所以我想知道是否可以使用管道来实现。

有人可以向我解释为什么是这样的:

echo "password\n" | ssh somehost.com

要么

ssh somehost.com <(echo "password\n")

不起作用?有可能使其工作吗?也许ssh以不同的进程执行,获取其PID,然后直接向其发送字符串?


阅读 476

收藏
2020-06-02

共1个答案

一尘不染

由于我的问题没有确切的答案,因此我进行了一些调查,为什么当存在其他可行的解决方案时为什么我的代码不起作用,因此决定发布我发现的内容以完成本主题。
事实证明:

“ ssh使用直接的TTY访问来确保密码确实是由交互式键盘用户发出的。”
sshpass联机帮助页

回答了这个问题,为什么管道在这种情况下不起作用。显而易见的解决方案是创建条件,以便ssh“认为”它可以在常规终端中运行,并且由于可以通过简单的posix功能来实现,因此这超出了简单bash所能提供的范围。

2020-06-02