我有一个使用跳转主机的 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