expect实现ssh自动登录
Posted WSYW126
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了expect实现ssh自动登录相关的知识,希望对你有一定的参考价值。
每次登陆服务器,都要输入账户密码,一般我们可以配置免密登陆。比如:将本地id_rsa.pub文件的内容,配置到远程服务器的~/.ssh/authorized_keys
文件,具体的步骤可以参考网上其他教程。
但是有时候由于一些限制要求,不能配置免密登陆,每次使用ssh username@hostIp再输入密码的方式太耗时,想要进行密码自动填充。
懒是一种生产力。
解决方法:使用expect在ssh_login.sh脚本中封装expect的ssh登录自动填充密码功能。
需要安装的软件:
- Mac安装expect:brew install expect
LUIT
平时在工作中经常连接Linux/Unix服务器,有的服务器是UTF-8,有的服务器是GBK。在Windows下SecureCRT可以完美解决这个问题,在Mac下要通过修改配置进行切换,比较麻烦。 下面隆重介绍一款Terminal下输出转码的工具——LUIT支持Mac、Linux原生的Terminal。 • 下载地址 http://invisible-island.net/luit/luit.html#download • 解压 tar zxvf luit.tar.gz cd luit-20141204 //可能版本会不一样 • 配置 ./configure • 编译 make • 安装 make install • 卸载 make uninstall • 使用 luit -encoding gbk ssh user@host
脚本:
起个名字:ssh_login.sh
#!/usr/bin/expect
set host [lindex $argv 0 ]
if $host != ""
spawn luit -encoding gbk ssh admin@$host
expect
"(yes/no)?"
send "yes\\n"
expect "password:" send "密码\\n"
"password:" send "密码\\n"
interact
else
puts stdout "Please enter the target host.";
完成上面的步骤之后,就可以在ssh_login.sh的目录下执行:./ssh_login.sh hostIp
,登录服务器了。
如果安装了iterm2,可以再~/.zshrc中配置alias login='~/你的目录路径/ssh_login.sh'
,之后就可以在任何地方,通过login hostIp
登录了。
参考资料:
网络资料
备注:
转载请注明出处:http://blog.csdn.net/wsyw126/article/details/80140079
作者:WSYW126
以上是关于expect实现ssh自动登录的主要内容,如果未能解决你的问题,请参考以下文章