kongguguren 2011-03-08
1,安装必备软件
基本工具
$sudo apt-get install ssh-client
自动化应答工具
$sudo apt-get install expect
2,登录脚本
利用expect建立一个ssh登录自动应答脚本
$vi sshHostWithUsernameAndPassword
填入下面的内容
#!/usr/bin/expect # This script needs one argument to(s) connect to remote server: # host = IP Addreess of remote UNIX server, no hostname # For example: # ./sshadmin 192.168.1.11 admin admin #set Variables set host [lrange $argv 0 0] set username [lrange $argv 1 1] #support to compose produce env password with static part and dynamic part set password [lrange $argv 2 3] spawn ssh $username@$host expect { #if need check hostkey, send yes -re ".*Are.*.*yes.*no.*" { send "yes\r" exp_continue #look for the password prompt } "*assword:" { send -- "$password\r" #the expect command will now return } } #using 'interact' to stop execute spawn interact;
3,登录的alias
$vi .bash_aliases
添加
alias sshHost1="sshHostWithUsernameAndPassword yourhost yourUsername yourPassword"
然后
$. .bash_aliases $sshHost1
就能用ssh免输入账号密码来登录服务器了
赶紧体验吧
如果有动态密码,那
$vi .bash_aliases
添加
alias sshHost2Dynamic="sshHostWithUsernameAndPassword yourhost yourUsername yourStaticPassword" $sshHost2Dynamic yourDynamicPassword
就可以了(通过sshHostWithUsernameAndPassword的“setpassword[lrange$argv23]”来组合)
4,clonesession
是不是很羡慕secureCRT里的clonesession的方式来重用同一个连接,避免第二次登录还要输入密码?其实这个就是ssh内置功能,我们只要按下面设置一下就好了。
创建文件
$vi ~/.ssh/config
在config的文件中,添加如下内容:
host * ControlMaster auto ControlPath ~/.ssh/master-%r@%h:%p
然后
$vi ~/.bash_aliases
添加(后面不需要密码了)
alias sshHost2DynamicClone="sshHostWithUsernameAndPassword yourhost yourUsername" $. ~/.bash_aliases
第一次登录
$sshHost2Dynamic yourDynamicPassword
后面再登录
$sshHost2DynamicClone
就可以登录了
同时我们发现~/.ssh/目录下有master-*的sock文件,就是它记录了我们目前登录到的机器,这样的话,我们登录同样的机器就会重用同一个session了。
其他linux发行版的同学应该都可以使用,毕竟这只是个ssh的客户端配置文件。
config文件的详细介绍可以参考:
http://linux.die.net/man/5/ssh_config