如何启动linux subshel​​l以使SSH_ASKPASS在linux中工作

我正在尝试创build一个bash脚本,用SSH_ASKPASS和DISPLAYvariables执行无密码的ssh命令。 在我的bash脚本中,我已经在命令之前和之后添加了括号,以在新的子shell中启动它。 脚本在一个新的shell中获取(获取一个新的PID),但TTY仍然附加。 根据我的理解,为了使SSH_ASKPASS正常工作,不应该附加TTY。 请让我知道如果有人有这个解决scheme。 我只想用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只包含密码

当我执行脚本时,它要求input密码。

感谢Adv。

Solutions Collecting From Web of "如何启动linux subshel​​l以使SSH_ASKPASS在linux中工作"

从'强制ssh总是使用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 

我一直在寻找这个;))这似乎是解决方案

Bash(Works 100%)

http://andre.frimberger.de/index.php/linux/reading-ssh-password-from-stdin-the-openssh-5-6p1-compatible-way/

或者使用期望

http://bash.cyberciti.biz/security/expect-ssh-login-script/

PS:我知道这是一个迟到的答案,但可能会帮助别人:)