如何为Linux_ASKPASS启动linux subshel​​l以在linux中工作

时间:2012-08-14 04:31:01

标签: linux ssh

我正在尝试使用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。

2 个答案:

答案 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%)

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

或使用Expect

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

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