版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/WSYW126/article/details/80140079
每次登陆服务器,都要输入账户密码,一般我们可以配置免密登陆。比如:将本地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