当你在执行 ssh 命令登录服务器时,有没有被需要输入命令后面的一长串参数感到厌烦呢?比如,名为 serveradmin 的用户要登录到 server.example.com 主机上,需执行:
1 | $ ssh serveradmin@server.example.com
|
你当然可以使用 alias,但 SSH 本身也提供有相应的解决方案──你可在 SSH 的 config 文件中为需要经常访问的远程主机创建别名。
首先,找找看你的用户主目录下是否有目录 .ssh,若没有,则使用 mkdir 创建一个;
然后,使用你喜欢的文本编辑器(如 Vim)来创建 config 配置文件:
1 | $ vim ~/.ssh/config
|
此 config 文件的权限必须是644:
1 | $ chmod 644 ~/.ssh/config
|
仍以前面的例子来说明,假设我要创建的别名为 lt,则加入下面的内容,其中 HostName 为主机名,User 为用户名:
1 2 3 | Host lt HostName server.example.com User serveradmin |
现在,你只要执行 ssh lt
就可以了。
字段 | 说明 |
---|---|
Host | 指定一个别名(alias) |
HostName | 服务器主机名 |
Port | 连接端口 |
User | 用户名 |
IdentityFile | 指定密钥文件 |
PreferredAuthentications | 指定认证方式,通常为 publickey |
下面是一个 config 文件示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | Host * PreferredAuthentications publickey Host github1 HostName github.com IdentityFile ~/.ssh/github1_rsa Host github2 HostName github.com IdentityFile ~/.ssh/github2_rsa Host gitcafe HostName gitcafe.com IdentityFile ~/.ssh/gitcafe_rsa |
前两行表示,下面所有的服务器优先使用密钥认证的方式;
第4~第10行,设置了两个别名,分别代表两个 github.com 的帐户,使用各自的密钥文件,只要使用下列地址:
git@github1:accountname/reponame.git
git@github2:accountname/reponame.git
就可以分别连接到各自的帐户。
最后三行,设置了另一个 Git 服务器 gitcafe.com 的别名和密钥。
本作品由 Yysfire 创作,采用进行许可。转载时请在显著位置标明本文永久链接:
http://yysfire.github.io/linux/create-ssh-alias.html