Mac下实现ssh自动登录和主机管理

在从Windows系统迁移到Mac后,ssh登录用的不太顺手。由于用惯了SecureCRT的自动登录和主机管理功能,而正版的SecureCRT for Mac OS X太贵了(99$),秉承着Mac下不用D版软件的想法,一直在寻找可以替代SecureCRT的方法。

Mac下没有类似SecureCRT的软件,自带的终端功能太弱了,就改用了Iterm2
Iterm2确实比较好用:

    支持多tab

      Cmd+left arrow 切换到左边tab
      Cmd+right arrow 切换到邮编tab
      cmd+数字 直接切换到某个tab
      Cmd-Option-E 显示所有tab,以便搜索导航
    可以将窗口水平、垂直布局,分成多个pane

      Cmd-D 垂直切分
      Cmd-Shift-D 水平切分
      Cmd-[ 和 Cmd-] 在不同pane中切换

但是Iterm2也不能像SecureCRT那样方便管理主机和自动登录,只能通过脚本来解决了。在网上找到用expect做自动登录的项目ssh-auto-login,和一个用python写的主机管理程序sshgo,发现把两个工程合并在一起,刚好可以实现SSH自动登录和主机管理功能。

ssh-auto-login其实就是用expect实现自动登录功能。expect的用法如下:

#!/usr/bin/expect -f

set r_host bill@10.10.10.10
set r_pwd 123456

spawn ssh "$r_host"
set timeout 30
expect "Password:"
send "$r_pwd\r"

interact

sshgo这个项目是用python脚本写了主机管理的界面,选择相应主机后,会执行ssh命令。我改了下,在选择主机后不是简单的执行ssh,而是调用expect脚本,这样就能免输密码访问了。

感谢Github和两个项目的作者,我只是把两个的功能合在一起而已。修改后的代码放在了github(ssh-auto-login-manage)上,项目的描述为:

SSH auto login in without password and managing hosts list, to instead of SecureCRT.

这样在Mac/Linux系统下就可以用Iterm2完全替代SecureCRT了。

运行界面如图:
ssh-auto-login

发表评论

电子邮件地址不会被公开。 必填项已用*标注