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

sh/bash/dash/ksh/zsh等Shell脚本
回复
LingU
帖子: 130
注册时间: 2010-12-17 13:16
送出感谢: 6 次
接收感谢: 0

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

#1

帖子 LingU » 2011-05-10 1:08

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

期待高手出现!!!

备:
Linux下简单的ssh代理与穿墙 « 瀚海星尘
http://vastars.info/linux/linux-proxy.html
头像
lilydjwg
论坛版主
帖子: 4163
注册时间: 2009-04-11 23:46
系统: Arch Linux
送出感谢: 11 次
接收感谢: 127 次
联系:

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

#2

帖子 lilydjwg » 2011-05-10 1:22

Google expect ssh
头像
bigsun
帖子: 301
注册时间: 2009-01-11 16:05
送出感谢: 2 次
接收感谢: 11 次

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

#3

帖子 bigsun » 2011-05-10 7:25

免密码ssh登陆设置

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

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

3.登陆到目标机器就不需要输入密码了。
免密码ssh登陆设置
LingU
帖子: 130
注册时间: 2010-12-17 13:16
送出感谢: 6 次
接收感谢: 0

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

#4

帖子 LingU » 2011-05-10 11:11

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

回3楼
那SSH服务器不是我的,是搜来的。谢谢
MaskRay
帖子: 61
注册时间: 2010-04-29 22:00
系统: Gentoo Linux ~amd64
送出感谢: 0
接收感谢: 6 次
联系:

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

#5

帖子 MaskRay » 2011-05-12 10:49

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
LingU
帖子: 130
注册时间: 2010-12-17 13:16
送出感谢: 6 次
接收感谢: 0

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

#6

帖子 LingU » 2011-05-12 18:08

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 abc@123.123.123.123
expect "assword:" {send "456\r"}
expect "(yes/no)?" {send "yes\r"}

另,如果SSH服务器的端口不是默认的22,是66,那又该怎么写?
MaskRay
帖子: 61
注册时间: 2010-04-29 22:00
系统: Gentoo Linux ~amd64
送出感谢: 0
接收感谢: 6 次
联系:

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

#7

帖子 MaskRay » 2011-05-12 20:28

忘记考虑 (yes/no) 了

spawn ssh -o ServerAliveInterval=30 -p 66 -CfND 9999 abc@123.123.123.123
LingU
帖子: 130
注册时间: 2010-12-17 13:16
送出感谢: 6 次
接收感谢: 0

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

#8

帖子 LingU » 2011-05-13 9:01

回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 abc@123.123.123.123
expect "assword:" {send "456\r"}
expect "(yes/no)?" {send "yes\r"}
运行这个没有启动 SSH
在终端运行提示 bash: 在未预料的“US”附近出现语法错误
MaskRay
帖子: 61
注册时间: 2010-04-29 22:00
系统: Gentoo Linux ~amd64
送出感谢: 0
接收感谢: 6 次
联系:

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

#9

帖子 MaskRay » 2011-05-13 12:37

代码: 全选

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

回到 “Shell脚本”