最近由于工作的需要,经常需要通过SSH登录各种不同的服务器。之前是通过vSSH这个软件来管理,现在比较倾向就使用iTerm2就可以了。

在使用终端来进行操作的时候,一次两次SSH还可以,但是次数多起来后,一遍又一遍的输入密码很麻烦。而且为了安全,我们AliYun的密码也挺复杂。每一次都需要在Evernote中找到,复制粘贴过来,很不爽。本来考虑写个脚本来处理,但是觉得明文的将密码存储下来,不是很安全。

So,既然都用的SSH,那合不使用SSH的特性来处理这个问题?免密码登录,就能方便的登录各个不同的服务器了。

SSH是一种对称加密,所以我们就只需要通过把自己的公钥放到远程服务器中就可以了。

  • 拷贝出自己的公钥信息

    cat ~/.ssh/id_rsa.pub

  • 登录到远程服务器中,查看**~/.ssh/authorized_keys**,没有的话可以新建一个
  • 打开这个文件,将自己的公钥按行拷贝进去
  • 在本地免密连接该远程服务器

    ssh yourUserName@yourRemoteAddress

就是这么简单,明了。一下子世界清净了,。,

接下来又有另外一个问题。每次输入登录名和IP地址也很麻烦,何况几个IP地址记录起来还可以。几十个的话就没戏了。

所以,可以在**~/.ssh/目录中创建一个config**,通过配置config,达到便捷登录的效果。

#主机名称
Host hostname
    #登录远程服务器的用户名
    User user
    #登录远程服务器的地址
    HostName remoteAddress
    #登录远程服务器的端口,默认为22
    Port remoteSSHProt
    #认证信息,即私钥地址
    IdentityFile ~/.ssh/yourPrivetKey

按照上面的格式,可以将常用的几个服务器都做下处理。之后需要连接某一个远程主机的话,仅仅需要输入你起的主机名称就好了。

ssh hostname

PS :

  • BWG的服务器默认的SSH端口是生成的,不是22,所以需要登录到它们的后台查看
  • GCE的SSH连接有一点不一样,需要在后台的VM实例中,通过添加元数据的方式,将自己的公钥拷贝进去即可