1、创建expect脚本
在 Mac 终端或者 iTerm2中,输入vim iterm2login.sh,创建名为iterm2login的脚本,内容为:
#!/usr/bin/expect
set timeout 30
spawn ssh -p [lindex $argv 0] [lindex $argv 1]@[lindex $argv 2]
expect {
"(yes/no)?"
{send "yes\n";exp_continue}
"password:"
{send "[lindex $argv 3]\n"}
}
interact
如上面的代码所示,其含有四个参数,分别为
- 1:[lindex $argv 0],表示服务器端口号;
- 2、[lindex $argv 1],表示服务器名称;
- 3、[lindex $argv 2],表示服务器 IP 地址;
- 4:[lindex $argv 3] ,表示服务器密码。
2、在 iterm2 中配置新的Profile
打开item2,Preferences -> Profiles 进入以下界面:image.png
1:+表示新增Profile,-表示移除Profile
2:表示我们自定义的Profile名称
3:Send text at start,发送服务器相关信息至expect脚本。
其中 第3项 的内容是非常重要的,必须按顺序。包括:脚本的全路径、端口号、服务器名称及服务器密码。如果 第3项 的内容书写错误或者弄混顺序,则会导致 SSH 免密登录失败。此外,服务器默认端口为22,具体按实际情况而定。在此给出一个 第3项 的内容实例:
/Users/cheche/iterm2login.sh 22 guest 100.110.120.130 password
3、最后,我们通过下图中的选项,即可免密登录服务器。
image.png
---------------------小小的分割线-------------------
ps :如果连接的时候如下图中的错误,则可以设置当前 iterm2login.sh 为可执行文件
命令:sudo chmod a+x iterm2login.sh。然后再重复第3步就可以免密登录了。
image.png