sshpass,权限被拒绝,请重试



我知道这个问题已经被提过好几次了(https://superuser.com/questions/606252/how-to-use-sshpass-for-chained-connection和https://unix.stackexchange.com/questions/320412/how-to-use-sshpass-to-supply-a-password-on-the-second-ssh-hop)但我发现的所有解决方案都不起作用。我正在尝试访问第三台机器(third@machine)通过使用sshpass以便不被提示插入密码。但是,必须使用架桥机(bridge@machine)在进入决赛之前。每次我需要输入bridge@machine以及third@machine,所以我的工作流程是:

sshbridge@machine

插入密码:

sshthird@machine

插入密码

到目前为止,我能够通过在~.ssh/config文件内的proxy命令中使用sshpass来避免第一个密码,如下所示:

vi~.ssh/config:

Host *.reference
User example_user
ProxyCommand sshpass -p $bridge_machine_password$ ssh -o StrictHostKeyChecking=no bridge@machine "nc -w 60 `basename %h .reference` %p"

当代我定义了一个别名";居里;在.bashrc文件中,该文件为:

别名curie='shthird@machine.reference'

因此,如果运行别名curie,我可以避免第一个密码,但仍然会提示我输入third@machine.

出于这个原因,我尝试使用sshpass访问third@machine以以下方式:

>sshpass -p 'third_machine_password' ssh -oProxyCommand="ssh -W %h:%p bridge@machine" third@machine

不幸的是,这会带来回报:

Permission denied, please try again.

可能是由third@machine或者我做错了什么?

如果您的密码包含特殊字符,如$。。。例如abcd@1234$$然后将\与特殊字符…一起使用。。。。在每个$$…之前添加此\。。。。它对我有效

找到解决方案:

首先在配置文件中创建代理命令

Host *.reference
User bridge
ProxyCommand sshpass -p passwd_bridge_machine2 ssh -o StrictHostKeyChecking=no bridge@machine2 "nc -w 60 `basename %h .ciment` %p"

在配置中设置了这个命令之后,我在.bashrc文件中创建了别名:

alias curie='sshpass -p passw_third@machine3 ssh third@machine3.reference'

添加.reference行很重要,因为它将首先调用配置文件中的proxycommand,然后在别名中使用sshpass。一旦一切都解决了,只需要在终端中运行别名,就可以在没有任何密码的情况下打开第三台机器。

希望它能帮助其他人

相关内容

最新更新