背景:
这个答案使用“ssphass”给出了一个有趣的提示。
我在‘~/..ssh/config’中设置的内容:
Host myServer
HostName 12.34.56.78
User bob
ProxyCommand sshpass -v -pmyPassword ssh %r@%h -W localhost:%p注:'-v‘sshpass选项只有在问这个问题时才能得到细节。
当我试图通过SSH连接时:
me@myWorkstation$ ssh myServer
SSHPASS searching for password prompt using match "assword"
SSHPASS read: bob@12.34.56.78's password:
SSHPASS detected prompt. Sending password.
SSHPASS read:
bob@12.34.56.78's password:它永远都在等待着:-
如果我编辑'~/. SSH /config‘并替换'myPassword’(这是附加到这个SSH登录的真正密码,手动登录时工作):
Host myServer
HostName 12.34.56.78
User bob
ProxyCommand sshpass -v -pnotMyPasswordAnymoreOhNo ssh %r@%h -W localhost:%p这意味着:
me@myWorkstation$ ssh myServer
SSHPASS searching for password prompt using match "assword"
SSHPASS read: bob@12.34.56.78's password:
SSHPASS detected prompt. Sending password.
SSHPASS read:
Permission denied, please try again.
SSHPASS read: bob@12.34.56.78's password:
SSHPASS detected prompt, again. Wrong password. Terminating.
ssh_exchange_identification: Connection closed by remote host我实际上得到了一个答复(尽管是否定的)。你能解释一下为什么吗?
发布于 2018-10-10 12:55:10
男人说:
首先也是最重要的是,sshpass的用户应该认识到ssh坚持只通过交互获得密码不是没有理由的。安全地存储密码几乎是不可能的,sshpass的用户应该考虑ssh的公钥身份验证是否提供相同的最终用户体验,同时减少麻烦并提高安全性。-p选项应该被认为是所有sshpass选项中最不安全的选项。所有系统用户都可以使用一个简单的"ps“命令在命令行中看到密码。Sshpass尽可能少地隐藏密码,但是这种尝试注定会在没有真正解决问题的情况下创建竞争条件。建议sshpass的用户使用其他更安全的密码传递技术之一。特别是,鼓励编写用于编程通信密码的程序的人使用匿名管道,并使用-d选项将管道的读取端传递给sshpass。
您可以尝试保存ENV变量并将其存储在那里,但这是错误的实践。
发布于 2021-08-14 14:13:24
如果有人有兴趣强迫ssh问一次密码,即sshpass提供密码并在错误情况下失败的时间,那么类似的事情会很好地工作。
sshpass -e ssh someuser@some.remote.server.com -o NumberOfPasswordPrompts=1 whoami解释:
sshpass在使用-e选项时从$SSHPASS环境变量获取密码ssh使用sshpass提供的密码,如果成功,则在远程服务器上运行whoami命令。-o NumberOfPasswordPrompts=1迫使ssh只能提示一次,并且sshpass提供的错误密码已经使用了1次,因此焦点返回到终端。https://serverfault.com/questions/934836
复制相似问题