Iterm2 设置免密登陆与服务列表

1,468 阅读1分钟

简介

用的MacBook,因为公司运维太菜,连个JumpServer都没有,每次都要用SSH命令来连接服务器,可是这么多IP谁记得住。于是发现可以用过Iterm2的功能来实现类似JumpServer的功能。

设置完成后效果如下:【Command+O】调出服务列表。

设置步骤

  • 打开Preferences「Command+,」
  • 新增一个Tag,设置Name,Command,脚本地址
  • 编写脚本:脚本一:登录到服务器:
#!/usr/bin/expect -d 
set host [IP]
set user [userName]
set password [password]
 
spawn ssh $user@$host
expect "*password:*"
send "$password\r"
interact

  • 编写脚本:脚本二:多层跳转,从外网到内网:
#!/usr/bin/expect

# 跳板机
set TERMSERV [IP]
set USER [userName]
set PASSWORD [password]
# 内网
set UATSERV [IP]
set UATUN [userName]
set UATPWD [password]

# 登录跳板机
spawn ssh -l $USER $TERMSERV

# expect是expect环境的一个内部命令,判断上一个指令输入之后的得到输出结果是否包含""双引号里的字符串,比如后面的"*password:*",表示上一个输出结果包含password:*通配符表示前后可以是任意字符

#类似于编程中的 switch语句,exp_continue相当于 continue
expect {
        "yes/no" {send "yes\r";exp_continue;}
         "*password:*" { send "$PASSWORD\r" }
        }
# 登录内网
expect "*$USER@*" {send "ssh $UATUN@$UATSERV\r"}
expect {
        "yes/no" {send "yes\r";exp_continue;}
        "*password:*" { send "$UATPWD\r" }
        }
interact
# 执行完成后保持交互状态,把控制权交给控制台

总结

核心是ssh 脚本的编写,虽然配置略显繁琐,但好在这种配置很少变更,文件也易于维护,而且最重要的是,相较于royal tsx之类的工具,这是免费的。