使用expect命令快速ssh到另一台主机

Posted by reedboat on Sep 13, 2010 in Linux |

如何不输入密码ssh登陆另一台主机,比如从机器A上登录到机器B上,两台机器都为linux?
当A, B两台主机的用户名相同的时候,如都为userA,可以使用密钥的方法
ssh-keygen 在A机器上为userA生成公私钥
ssh-copy-id 将A上userA的公钥拷贝到B主机
然后userA即可以无需密码从A主机登陆到B主机了

如果两台主机的用户名不同,分别为userA和userB,怎么办?
这时候可以expect命令来帮忙完成。在主机A上写一个很简单的脚本,
loginB.sh,赋予可执行权限。

#!/usr/bin/expect                                                                                                            

spawn ssh userB@hostB
expect "password:"
send "passwordB\r"                                                                                                                
interact

这个时候 只需要执行./loginB.sh 即可登陆B主机了,不过这样容易密码不太安全,
在不太担心密码安全的情况下,可以用这种方式。最好去掉所在用户组和其他用户的读、写以及执行权限。
对于这个如果有更好的方案,欢迎留言之争,谢谢。

还可以为常用的访问做一些alias,使得访问更方便, 比如第一种方式定义
alias s11=”ssh 192.168.2.11″
alias s32=”ssh 192.168.2.32″
第二种方式
alias s11=/home/userA/bin/login192.168.2.12.sh
alias s32=/home/userA/bin/login192.168.2.32.sh
等等。

关于作者
reedboat, 每讯网, 研发经理
执着的技术人,完美的追求者。
PHP、JS职业攻城师。
SNS、SCM、IOS、敏捷开发、推荐算法…

无觅相关文章插件,快速提升流量

Tags: ,

Reply

使用新浪微博登陆

Copyright © 2012 苇叶舟 All rights reserved. Theme by Laptop Geek.