我正在尝试创建一个 bash 脚本来执行带有 SSH_ASKPASS 和 DISPLAY 变量的无密码 ssh 命令。在我的 bash 脚本中,我在命令前后添加了括号以在新的子 shell 中启动它。该脚本在一个新的 shell 中启动(获取一个新的 PID),但仍然附加了 TTY。据我了解,要使 SSH_ASKPASS 正常工作,不应附加 TTY。如果有人对此有解决方案,请告诉我。我只想使用 shell/bash 脚本来完成。
#!/bin/bash
SSH_ASKPASS=/tmp/abc
DISPLAY=localhost:0.0
ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null 10.10.10.10 -lroot /bin/ls
/tmp/abc 只包含密码
当我执行脚本时,它要求输入密码。
感谢 Adv.
最佳答案
灵感来自 'Force ssh to always use SSH_ASKPASS' : 你需要分离终端。尝试使用 setsid
:
#!/bin/bash
SSH_ASKPASS=/tmp/abc
DISPLAY=localhost:0.0
setsid ssh -o StrictHostKeyChecking=no \
-o UserKnownHostsFile=/dev/null 10.10.10.10 -lroot /bin/ls
关于linux - 如何为 SSH_ASKPASS 启动 linux 子 shell 以在 linux 中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11945815/