如何使用 sshpass 在第二个 ssh 跃点上提供密码

如何使用 sshpass 在第二个 ssh 跃点上提供密码

注意:这可能看起来与这个问题。它是相关的但不相同(加上它在不同的 StackExchange 站点中)。在这个问题中,作者询问了一种在远程系统中执行命令的方法。在这个问题中,我问如何通过两个 SSH 连接打开(和维护)shell。

我必须通过一台中间机器(我们称之为$gateway)才能到达我的$server.所以我的典型工作流程是:

ssh $gateway (supply password manually)
ssh $server (supply password manually)

我可以在到 的跃点上配置 SSH 公钥身份验证,$gateway但不能在到 的第二跃点上配置 SSH 公钥身份验证$server。所以我能做的最好的就是:

ssh $gateway (no password necessary)
ssh $server (supply password manually)

我的问题是:我可以使用sshpass或其他方法在第二跳提供密码吗?我没有sshpass在机器上安装或任何其他软件的权限$gateway

答案1

您可以尝试忽略手动密码输入 -

vipin@kali:~$ cat kk.sh
#!/usr/bin/expect 
    set password 1               #set password to 1 (hardcoded)
    spawn ssh kali@kali          # user and hostname is kali
    expect "password"
    send "$password\r"
    interact                     # to get the shell prompt
vipin@kali:~$ ./kk.sh            # execute it and you are in new server

答案2

使用ProxyCommand

sshpass -p server_password ssh -oProxyCommand="ssh -W %h:%p $gateway" $server

它将sshpass从您的本地主机运行。

相关内容