最近老王把 MacBook 重装了下,重装前把 iTerm2 的 Profiles 导出保存了,但是导入到新的 iTerm2 后发现之前保存的 SSH 信息以及 SSH 自动登录是基于一个脚本的,网上找了好久才找到相关的代码,本文记录下 iTerm2 保存 SSH 信息和 iTerm2 SSH 自动登录教程。
一、配置 SSH 自动登录脚本
在 /usr/local/bin
下新建一个文件 iterm_ssh.sh
,代码如下(如果 /usr/local/bin
路径不存在,则先创建路径:sudo mkdir /usr/local/bin
):
#!/usr/bin/expect set timeout 30 set host [lindex $argv 1] # 这一行是设置一个变量的意思,变量名随便起,尽量有意义,后面表示的是传入的参数,0 表示第一个参数,后面会用到。 set port [lindex $argv 2] set user [lindex $argv 0] set pswd [lindex $argv 3] spawn ssh -p $port $user@$host # spawn 是 expect 环境的内部命令,它主要的功能是给 ssh 运行进程加个壳,用来传递交互指令。 expect { "(yes/no)?" {send "yes\n";exp_continue;} -re "(p|P)ass(word|wd):" {send "$pswd\n"} } # expect 也是 expect 环境的一个内部命令,用来判断上一个指令输入之后的得到输出结果是否包含 "" 双引号里的字符串,-re 表示通过正则来匹配。 # 如果是第一次登录,会出现 "yes/no" 的字符串,就发送(send)指令 "yes\r",然后继续(exp_continue)。 interact # interact:执行完成后保持交互状态,把控制权交给控制台。
赋予脚本执行权限:
sudo chmod +x /usr/local/bin/iterm_ssh.sh
二、iTerm2 保存 SSH 信息并自动登录
回到 iTerm2,Profiles -> Open Profiles -> Edit Profiles,新建一个 Profile,Command 选 Login Shell,Send text at start 填 iterm_ssh.sh root 120.25.**.** 22 40Ex48ACCmtSEsV
,其中 root 是用户名,120.25.*.* 是 IP,22 是端口,40*** 是密码:
之后,再需要通过 iTerm2 远程连接这台服务器时,只需要在菜单栏的 Profiles 里找到这个保存的 Profile 单击就可以自动填充 SSH 信息并连接了: