2012-11-30 90 views
0

可能重复:
pass password to su/sudo/ssh
SSH in shell scipt with passwordSSH与密码

是否有可能,我可以通过密码ssh命令

ssh [email protected] | echo "Password" (or)  
echo "Password" | ssh [email protected] (or) a script like below 
pw1="Password" 
ssh -t [email protected] <<< EOF 
$pw1 
EOF 

任何解决方案可以帮助。

我在windows上,我用putty连接到Linux主机,从Linux连接到另一台Linux主机。问题是我无法在Linux主机上使用任何第三方工具,也无法添加rsa-keys。

+0

我不能使用像期待的工具。 – Sunny

+0

另外两个Linux版本都是SUSE 11 Sp2 – Sunny

+0

避免这样做。使用公钥,并适当地配置你的'ssh'。 –

回答

0

我知道你不能添加,但如果sshpass安装

+0

未安装sshpass。 – Sunny

0

使用expect看。请参阅here

我在一个项目中使用了它。这真的很有帮助。实现起来有点长,但逻辑很简单 - 在ssh“查询”之后,你只是“期望”你在命令之后编写的内容作为正则表达式。希望能帮助到你。

+0

其限制使用工具像预期 – Sunny

0

使用期待,这里一个脚本示例:

#!/usr/bin/expect -f 
    set timeout 20 
    set IPaddress [lindex $argv 0] 
    set Username "your_username" 
    set Password "your_password" 
    set Directory DIRECTORY_PATH 

    log_file -a $Directory/session_$IPaddress.log 
    send_log "### /START-TELNET-SESSION/ IP: $IPaddress @ [exec date] ###\r" 

    spawn telnet $IPaddress 
    expect "Username: " 
    send "$Username\r" 
    expect "Password: " 
    send "$Password\r" 
    interact 
    send_log "\r### /END-TELNET-SESSION/ IP: $IPaddress @ [exec date] ###\r" 
exit 

来源Expect scripts for automatic login with telnet and SSH

编辑:如果你不想使用期望的工具,你应该尝试使用SSH密钥登录交换

EDIT2:我读过你了nt想要使用除了或密钥交换,但我不确定这可以完成没有这些。

检查这个帖子:

SSH Automatic Login

另一种选择:

http://sourceforge.net/projects/sshpass/

+0

感谢您的答复,但其限制使用工具像预期 – Sunny

+0

更新了我的答案。如果你不想使用期望工具,你应该尝试使用ssh密钥交换日志 –

+0

卡洛斯兰德,请做参考的问题。我无法使用任何第三方工具或ssh密钥。但是谢谢。 – Sunny