我的示例是,我正在通过服务器建立隧道,并希望创建一个命令来输入密码,但完成后将标准输入保持打开状态。例如,每次登录此远程主机时,我都需要对不同的用户进行 sudo。所以我做了类似的事情:
ssh -p $tunnel_port $me@localhost -t "sudo -S -u $_remoteUser -i" <<< "$( findPassword )"
“findPassword”是一个从密码管理器中获取我的密码的函数
这将关闭连接,在将密码写入 sudo 的标准输入后,如何保持连接打开?
答案1
您有这样的引用,即 ssh 命令的 STDIN 由 findPassword 提供。您希望 sudo 命令的 STDIN 由 findPassword 提供。
ssh -p $tunnel_port $me@localhost -t "echo $(findPassword) | sudo -S -u $_remoteUser -i"
或者
ssh -p $tunnel_port $me@localhost -t "sudo -S -u $_remoteUser -i < $(findPassword)"