嵌套 sshpass 用于 ssh 并带有“-J”跳转主机选项

嵌套 sshpass 用于 ssh 并带有“-J”跳转主机选项

我有一个使用跳转主机的 ssh 命令脚本:

scp -J user@jump file admin@server
ssh -J user@jump admin@server "touch hello"

我只想询问一次密码并尝试sshpass

sshpass -p "PasswordForJump" scp -J user@jump file admin@server

这只会询问管理员@服务器。但是由于有两个ssh/scp命令,所以我还是要输入两次admin密码。

我尝试嵌套sshpass但是脚本被阻止:

sshpass -p "PasswordForJump" sshpass -p "PasswordForServer" ssh -J user@jump admin@server

我天真地尝试在一个文件中设置两个密码(每行一个),期望sshpass一个接一个地使用,但这也失败了。

我可以sshpass提供两个密码吗?

答案1

env SSHPASS="JUMP_PASSWORD" \
  sshpass -d 123 ssh \
    -o ProxyCommand="sshpass -e ssh -W %h:%p JUMP_USER@JUMP_HOST" \
  TARGET_USER@TARGET_HOST \
  123<<<TARGET_PASSWORD

上面的例子取自我在 StackExchange 上对一个类似问题的回答:https://unix.stackexchange.com/questions/597351/sshpass-with-ssh-j-jump-host/668489#668489

sshpass -p此示例比使用选项传入密码更安全。使用-p参数允许在系统进程列表中看到密码。使用-e和的组合-d将避免发生这种情况。

答案2

我让它与代理命令选项一起工作:

> sshpass -p serverpassword ssh -oProxyCommand="sshpass -p gatewaypassword ssh -W %h:%p uname@gatewayserver" uname@targetserver

相关内容