我想通过sshbash脚本传递密码(是的,我知道我可以使用ssh密钥,但这不是我想要的)。
ssh
我发现了一些正在使用的解决方案,expect但由于它不是标准的bash工具,所以我想知道是否可以使用管道来实现。
expect
有人可以向我解释为什么是这样的:
echo "password\n" | ssh somehost.com
要么
ssh somehost.com <(echo "password\n")
不起作用?有可能使其工作吗?也许ssh以不同的进程执行,获取其PID,然后直接向其发送字符串?
由于我的问题没有确切的答案,因此我进行了一些调查,为什么当存在其他可行的解决方案时为什么我的代码不起作用,因此决定发布我发现的内容以完成本主题。 事实证明:
“ ssh使用直接的TTY访问来确保密码确实是由交互式键盘用户发出的。” sshpass联机帮助页
回答了这个问题,为什么管道在这种情况下不起作用。显而易见的解决方案是创建条件,以便ssh“认为”它可以在常规终端中运行,并且由于可以通过简单的posix功能来实现,因此这超出了简单bash所能提供的范围。
posix
bash