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