我有两台客户的机器,$gateway
和$server
,第二台只能从第一台访问。两个系统上都无法使用公钥认证。因此,要$command
在服务器上执行某些操作,我需要运行ssh $gateway ssh $server $command
,然后输入两个密码。我可以使用sshpass
,但它只能处理第一个连接,我仍然需要手动输入第二个密码。
我怎样才能以完全非交互式的方式(无需手动输入密码) ssh 访问服务器?
我看到的唯一方法是使用隧道,但由于互联网连接不稳定,它们很难维持。
答案1
尝试:
ssh -oProxyCommand="ssh -W %h:%p $gateway" $server command
例如:
ssh -oProxyCommand="ssh -W %h:%p [email protected]" [email protected] command
$server
这将使用代理通过另一个命令连接 ssh ssh
,而无需实际创建隧道。这确保两个 ssh 客户端都在本地运行,从而使用 sshpass。