我正在尝试制作一个脚本来创建 ssh 连接并执行需要多个用户交互的远程命令。远程脚本需要两个顺序的密码。另一个 ssh 连接和一个用于 git pull (ssh-) 命令的连接。
本地脚本(手动运行):
#!/bin/bash
echo -n "Password 1: "
read -s password_1
echo
echo -n "Password 2: "
read -s password_2
echo
result=$(ssh -t user@remote_host "/path/to/remote_script.bs" 2>&1 <<EOF
echo "$password_1"
echo "$password_2"
EOF
)
echo "$result"
远程脚本(remote_script.bs):
# expects first password
ssh -M -S ".ssh_socket" -fNT "fixed_user@git_server" -L 1234:192.168.24.99:22
# expects seconds password; git is configured to pull via localhost portforwarding of ssh connection above
git --git-dir "path_to_git/.git" pull
远程交互忽略回显的密码并匆忙进入失败的身份验证。
由于环境多样,我无法使用 expect 或 sshpass。