我正在尝试使用SSH_ASKPASS和DISPLAY变量创建一个bash脚本来执行无密码的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。
答案 0 :(得分:1)
从'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
答案 1 :(得分:0)
我一直在寻找这个;)) 这似乎是解决方案
Bash(工程100%)
或使用Expect
PS:我知道这是一个迟到的答案,但可能会帮助别人:)