0

可能重复:使用密码在 shell scipt 中将密码
传递给 su/sudo/ssh SSH

有没有可能我可以为 ssh 命令传递密码

ssh root@10.20.30.40 | echo "Password" (or)      
echo "Password" | ssh root@10.20.30.40 (or) a script like below  
pw1="Password"
ssh -t root@168.56.64.245 <<< EOF  
$pw1  
EOF

任何解决方案都会有所帮助。

我在 Windows 上,我正在使用 putty 连接到 Linux 主机,然后从那个 Linux 连接到另一个 Linux 主机。问题是我不能在 Linux 主机上使用任何 3rd 方工具,我也不能添加 rsa-keys。

4

3 回答 3

0

我知道你不能添加,但看看是否安装了 sshpass

于 2012-11-30T22:37:44.273 回答
0

使用expect,这里是一个脚本示例:

#!/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

来源期待使用 telnet 和 SSH 自动登录的脚本

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

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

检查这篇文章:

SSH 自动登录

另外的选择:

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

于 2012-11-30T22:48:29.273 回答
0

使用expect. 看这里

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

于 2012-11-30T22:44:56.790 回答