gpt4 book ai didi

linux - 在纯 bash 中将密码传递给 ssh

转载 作者:IT老高 更新时间:2023-10-28 12:38:47 25 4
gpt4 key购买 nike

我想使用 bash 脚本将密码传递给 ssh(是的,我知道我可以使用 ssh key ,但这不是我想要的)。

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

谁能给我解释一下,为什么是这样的:

echo "password\n" | ssh somehost.com

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

不工作?有没有可能让它发挥作用?也许将 ssh 作为不同的进程执行,获取它的 PID,然后直接向它发送一个字符串?

最佳答案

您不能从命令行指定密码,但您可以使用 ssh key 或使用 sshpass按照 John C. 的建议或使用 expect脚本。

要使用 sshpass,您需要先安装它。那么

sshpass -f <(printf '%s\n' your_password) ssh user@hostname

而不是使用 sshpass -p your_password .正如 Charles Duffy 所述在评论中,从文件或变量而不是命令行提供密码更安全。

顺便说一句,对 <(command) 的一点解释句法。 shell 执行括号内的命令,并用文件描述符替换整个内容,该文件描述符连接到命令的标准输出。您可以从此答案中找到更多信息 https://unix.stackexchange.com/questions/156084/why-does-process-substitution-result-in-a-file-called-dev-fd-63-which-is-a-pipe

关于linux - 在纯 bash 中将密码传递给 ssh,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24454037/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com