前言
连接远程服务器的工具有很多,本人也基本都折腾过,总结下来体验最好、使用人数最多的两款非xshell和SecureCRT莫属,看下对比图:
工具 | 支持的平台 | 会话复制 | 是否有免费版 | 正版价格 |
---|---|---|---|---|
Xshell | Windows | 支持 | 有 | ¥988+ |
SecureCRT | Windows、Mac、Linux | 支持 | 无 | ¥900+ |
相信大多数人都是用习惯了但“买不起”的,虽然网上有很多破解版,但是老觉得用着不踏实(木马?后门?密码泄露?)。
替代方案
对于使用Mac的同学,比较简单的替代方案是使用iterm2。
目前网上介绍最多的是以下两种方式实现的自动登录:
shell脚本 + expect + iterm2触发器
shell脚本 + sshpass
这两种方式都显得很蹩脚,还得用shell脚本。
而且密码还明文暴露在shell脚本里,不加个密吗?
对密码和shell不敏感的小伙伴自己去搜下怎么实现的吧,此处不推荐。
这里介绍的方式是纯使用iterm2
实现,可以做到不暴露明文密码,配置非常简单,像使用xshell一样丝滑。
先来个演示
cmd + o
打开服务器列表,方向键选择要登录的机器,回车,提示输入密码;option + cmd + f
打开密码管理器,方向键选择密码,回车,即可登录;(这一步通过配置触发器其实可以省略,后面有介绍)- 此时若重复步骤1,借助ssh会话复制已不需要输入密码。
开始配置
添加服务器
点击iterm2—>Preferences—>Profiles,按图示配置一个新的profile
配置密码管理器
点击iterm2—>Window—>Password Manager,按图示配置一个密码,配置完后可按ESC
键关闭该窗口
配置触发器
找到对应Profiles
里面的Advanced
选项,找到Triggers
,点击Edit
配置成如下图所示,这样当执行cmd + o
时,就只需要选择机器,回车后,就能自动弹出密码了,不再需要option + cmd + f
这个操作:
第一列表示当终端出现哪些字符的时候触发这个配置
第二列是触发动作,这里选择打开密码管理器
第三列是定位到密码管理器里面的哪个密码配置
后面两列不知道。。。都选上了
配置SSH会话复制、会话保持
使用过SecureCRT和Xshell的同学都知道有个session copy的功能,其实ssh本身就支持这个,只需在~/.ssh/config
文件里添加几行配置即可。
# 会话复制相关配置
Host *
ControlMaster auto
ControlPath ~/.ssh/%r@%h:%p.socket
ControlPersist yes
ServerAliveInterval 10 # 每隔10s发一次心跳
ServerAliveCountMax 3 # 三次心跳没响应则关闭连接