sshpass 通过常规 ssh 客户端

sshpass 通过常规 ssh 客户端

我正在使用一个使用/usr/bin/ssh并需要无密码身份验证的应用程序。同时我想将其与需要的服务器一起使用两个都公钥和密码同时验证。在大多数情况下,仅使用sshpass是一个很好的解决方案(假设我的秘密密码是安全的,并且我同时也使用安全的公钥身份验证),但sshpass回绕ssh而不是相反。

被调用sshpass时如何使用?/usr/bin/ssh x我当前的解决方法是下面的配置。它可以工作,但它从目标服务器跳到自身。我宁愿没有这个开销。

Host x
    HostName xxx.xxx.xx
    ProxyCommand sshpass -f passwordfile ssh -W %h:%p xxx.xxx.xx

有没有办法在不跳到服务器本身的情况下获得相同的结果?

(否则 - 对于未来遇到同样问题的人 - 上面的配置是一个可行的解决方案。)

答案1

鉴于我使用的应用程序是一个搜索sshin的 CLI 程序$PATH,可以修改 PATH 以包含ssh实际上是sshpass包装器的特殊命令。

包装sshpass成一个名为的可执行文件ssh

/path/to/bin/ssh:

#!/usr/bin/env bash
sshpass -f /path/to/passwordfile ssh "$@"

然后在运行时将自定义的父目录添加ssh到 PATH 中,方法是在或myapp中添加以下别名:.zshrc.bashrc

alias myapp="PATH=/path/to/bin:$PATH myapp"

相关内容