5、省略主机名
输入服务器的完整主机名来建立一个新的SSH连接实在是太乏味无聊了,尤其是当你有一组拥有相同域名但是子域名不同的服务器需要管理时,比如下面这样:
* www1.example.com * www2.example.com * mail.example.com * intranet.internal.example.com * backup.internal.example.com * dev.internal.example.com |
或许你的网络已经配置了可以直接使用短域名,比如intranet,但是如果你的网络不支持,实际上你可以自己搞定这个问题,而不用求助网络管理员。
解决办法根据你用的操作系统而略有差异,下面是我的Ubuntu系统的配置:
prepend domain-search “internal.example.com”, “example.com”; |
然后你需要重启网络:$ sudo restart network-manager
不同的系统,这两条命令可能会略有差异。
5、主机别名
你也可以在你的SSH配置中直接定义主机别名,就像下面这样:
Host dev HostName dev.internal.example.com |
你还可以使用通配符来进行分组:
Host dev intranet backup HostName %h.internal.example.com Host www* mail HostName %h.example.com |
在Putty中你可以为每个主机名保存单独的session,然后双击建立连接(但是它可能没办法支持通配符)。
7、省去用户名
如果你在远程服务器上的用户名和你本地的用户名不同,你同样可以在SSH配置中进行设置:
Host www* mail HostName %h.example.com User simon |
现在就算我的本地用户名是 smylers,我仍然可以这样连接我的服务器:
$ ssh www2 |
SSH会使用simon账户连接你的服务器,同样,Putty可以保存这个信息在你的session中。
8、在服务器间跳转
有些时候,你可能没法直接连接到某台服务器,而需要使用一台中间服务器进行中转,这个过程也可以自动化。首先确保你已经为服务器配置了公钥访问,并开启了agent forwarding,现在你就可以通过2条命令来连接目标服务器,不会有任何提示输入:
$ ssh gateway gateway $ ssh db |
然后在你的本地SSH配置中,添加下面这条配置:
Host db HostName db.internal.example.com ProxyCommand ssh gateway netcat -q 600 %h %p |