分页: 1 / 1

求一个自动输入法密码的SSH代理脚本

发表于 : 2011-05-10 1:08
LingU
按下边这个帖子里的方法可以在终端登陆SSH代理,但每次输入就比较麻烦了。
我现在对脚本一窍不通,哪位可以帮忙写个自动执行的脚本?
由于是有帐号、密码的SSH代理,执行“ssh -qTfnN -D 端口 用户名@远程ssh主机名”
等待几秒会要求输入密码,不知能否实现自动输入密码?

期待高手出现!!!

备:
Linux下简单的ssh代理与穿墙 « 瀚海星尘
http://vastars.info/linux/linux-proxy.html

Re: 求一个自动输入法密码的SSH代理脚本

发表于 : 2011-05-10 1:22
lilydjwg
Google expect ssh

Re: 求一个自动输入法密码的SSH代理脚本

发表于 : 2011-05-10 7:25
bigsun
免密码ssh登陆设置

1. 在本地机器执行
ssh-keygen -t rsa
过程中一路回车。

2.将生成的.ssh/id_rsa.pub文件中的内容复制到目标机的
.ssh/authorized_keys
文件中(若没有则创建)。一般用scp命令.

3.登陆到目标机器就不需要输入密码了。
免密码ssh登陆设置

Re: 求一个自动输入法密码的SSH代理脚本

发表于 : 2011-05-10 11:11
LingU
回2楼
感谢!
找到一个方法 在3楼
Expect with SSH - Ubuntu Forums
http://ubuntuforums.org/showthread.php?t=220139

回3楼
那SSH服务器不是我的,是搜来的。谢谢

Re: 求一个自动输入法密码的SSH代理脚本

发表于 : 2011-05-12 10:49
MaskRay
spawn ssh 开头的那行根据需要修改

代码: 全选

#!/bin/sh
# -*- tcl -*-
# the next line won't be executed by tclsh \
exec tclsh $0

package require Expect

if {[fork] != 0} exit
disconnect

spawn ssh -o ServerAliveInterval=30 -CfND 9999 localhost
expect "assword:" {send "1\r"}
expect

Re: 求一个自动输入法密码的SSH代理脚本

发表于 : 2011-05-12 18:08
LingU
MaskRay 写了:spawn ssh 开头的那行根据需要修改

代码: 全选

#!/bin/sh
# -*- tcl -*-
# the next line won't be executed by tclsh \
exec tclsh $0

package require Expect

if {[fork] != 0} exit
disconnect

spawn ssh -o ServerAliveInterval=30 -CfND 9999 localhost
expect "assword:" {send "1\r"}
expect
比如说有个提供 SSH 服务器,IP:123.123.123.123 端口:22
需要帐号密码才能登陆使用 帐号:abc 密码:456
还有,我用终端登陆时有时会提示 ……(yes/no?)

你看从 spawn 开始部分这样修改对吗?

spawn ssh -o ServerAliveInterval=30 -CfND 9999 [email protected]
expect "assword:" {send "456\r"}
expect "(yes/no)?" {send "yes\r"}

另,如果SSH服务器的端口不是默认的22,是66,那又该怎么写?

Re: 求一个自动输入法密码的SSH代理脚本

发表于 : 2011-05-12 20:28
MaskRay
忘记考虑 (yes/no) 了

spawn ssh -o ServerAliveInterval=30 -p 66 -CfND 9999 [email protected]

Re: 求一个自动输入法密码的SSH代理脚本

发表于 : 2011-05-13 9:01
LingU
回7楼

代码: 全选

#!/bin/sh
# -*- tcl -*-
# the next line won't be executed by tclsh \
exec tclsh $0

package require Expect

if {[fork] != 0} exit
disconnect

spawn ssh -o ServerAliveInterval=30 -CfND 9999 [email protected]
expect "assword:" {send "456\r"}
expect "(yes/no)?" {send "yes\r"}
运行这个没有启动 SSH
在终端运行提示 bash: 在未预料的“US”附近出现语法错误

Re: 求一个自动输入法密码的SSH代理脚本

发表于 : 2011-05-13 12:37
MaskRay

代码: 全选

#!/bin/sh
# -*- tcl -*- \
exec tclsh $0

package require Expect

if [fork] exit
disconnect

spawn ssh -o ServerAliveInterval=30 -CfND 9999 localhost
expect {
    "(yes/no)\\?" {send "yes\r"; exp_continue}
    "assword:" {send "1\r"}
}
expect