ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
最近在mac中折腾ssh自动登录的问题,不自动登录每次输入命令太痛苦了,采取的方案是expect脚本的方式,其实选择这种方案而不是在远程服务器上保存key的方式主要是因为公司限制了在跳板机上保存私有数据的权限,如果想了解如何不输入密码登录远程机器的原理,请看这篇博客 当然,OS X上的终端可以使用iterm2,这样配置后便利性不比$99的secureCRT差 首先介绍下不通过跳板机进行登录的方式,准备: 1. 写一个expect脚本 ``` #!/usr/bin/expect set timeout 30 spawn ssh [lindex $argv 0]@[lindex $argv 1] expect { "(yes/no)?" {send "yes\n";exp_continue} "password:" {send "[lindex $argv 2]\n"} } interact ``` 该脚本计较简单,需要三个参数,第一个参数是远程用户名,第二个参数是远程地址,第三个参数是密码. 2. 将expect脚本copy到$PATH下(例如/usr/local/bin),并给予权限 ``` chmod 775 expect ``` 3. mac 环境变量 path 3.1 单用户设置 ``` ~/.bash_profile (任意一个文件中添加用户级环境变量) export PATH=/opt/local/bin:/opt/local/sbin:$PATH ``` 4. 在iterm2中设置登录命令为1中的脚本,用command+o的方式呼出profiles,点击Edit Profiles ![](https://box.kancloud.cn/eb0053e2ccf480c089bf23c1ad76fd25_735x382.png) 上面是已配置的远程登录机列表,双击可以自动登录 ![](https://box.kancloud.cn/412df143e2ec0705fb25e8618c0d52fe_924x541.png) 如上图配好后,即可自动登录 下面再说下有跳板机的情况 俺公司的跳板机策略如下,不同公司的环境不一样,也许某些同学可以进行参考 1.跳板机上不能存放任何文件,/tmp下可以方临时文件,每天会定时清掉 2.copy文件方向只能是local->跳板机->remote的方向,即local可以push/pull跳板机上的文件,跳板机可以push/pull远程上的文件 3.向跳板机登录前需要通过邮件/短信的方式获取passcode,这是除密码之外的额外的验证方式 其实跳板机的自动远程登录与非跳板机的差异在expect脚本的编写上,其他的照搬即可,那这里就直接把代码贴出来就行了