使用 .ssh/config 简化您的 SSH 工作流程
如果你是一名系统管理员,或者每天都要使用多个不同的 SSH 主机,那么你可能已经习惯了在登录主机时,由于需要构建 SSH 命令而带来的各种麻烦。
非标准用户名
我个人使用各种不同的系统,这些系统并非都以相同的方式设置,或者有一些要求,这意味着我对服务器的身份验证并不像ssh root@{ipaddress}那样简单。
随着AWS EC2 Linux 2镜像的推出,出现了一个新的用户名,我不得不为此准备我的 ssh 命令。当我的系统中混合了 Debian 和 Ubuntu 镜像,每个镜像都有非标准的用户名时,总是很难记住哪个镜像需要什么。
私钥无处不在
$ ls -al | grep pem
-r--------@ 1 nathan staff 1696 Aug 10 11:09 aws-home.pem
-r--------@ 1 nathan staff 1696 Aug 3 14:50 aws-work.pem
-r--------@ 1 nathan staff 1692 Aug 21 21:24 svr-home.pem
-r--------@ 1 nathan staff 1696 Jan 3 11:04 svr-work.pem
需要记住的不仅仅是用户名;如果你有任何合理的安全意识,你或你的公司可能都有需要加载到系统中的 SSH 密钥,用于向目标服务器进行身份验证。
随着时间的推移,你会积累来自各处的密钥,这变成了一场寻找有效密钥的游戏,直到你最终感到沮丧,并将安全性放在一边,因为你在每个服务器上都使用相同的密钥对。
确实有一些读者可能所在公司会为他们管理密钥库,并为每个系统部署一个密钥,该密钥的有效权限与员工的角色绑定。虽然这种方法完全有效,但并非适用于所有人的情况。
引入 .ssh/config 文件
用户主路径下的 .ssh 文件夹的配置文件可以解决我们大多数(如果不是全部)常见问题;但我发现 IT 专业人员和开发人员要么不知道这一点,要么很少使用它。
基本配置
我通常会在系统中看到或设置的最简单的配置如下
Host *
AddKeysToAgent yes
IdentityFile ~/.ssh/id_rsa
此配置定义了以下内容:
- 主机*:此配置应应用于所有 SSH 连接。
- AddKeysToAgent:当 SSH 代理提示使用密钥时,它应该加载并记住该密钥,直到守护进程重新启动或系统重新启动(从而避免每天输入 100 次密码)。
- IdentityFile:您的主私钥名为id_rsa,位于用户系统的HOME/.ssh路径中。
对于大多数用户来说,这种配置基本没问题,尤其适合那些只有一个简单的私钥,用于通过SSH 对GitHub进行身份验证/版本控制等操作的用户。
高级配置
我们来看一个更高级的例子。假设我们有以下服务器、密钥对和用户名:
| 入口 | 用户 | 钥匙 |
|---|---|---|
| 13.124.22.54 | ec2-user | aws-home.pem |
| 11.150.20.3 | Ubuntu | aws-work.pem |
| 15.31.2.1 | 根 | srv-home.pem |
| devopstar.com | ||
| 14.222.10.23 | 内森 | srv-work.pem |
我们需要考虑很多复杂因素,您可以想象每次都要凭记忆输入这些命令会有多么麻烦。好消息是,我们可以将所有猜测和复杂性简化为如下所示的.ssh/config配置。
### Global ###
Host *
AddKeysToAgent yes
IdentityFile ~/.ssh/id_rsa
### Work ###
Host 11.150.20.3
User ubuntu
IdentityFile ~/.ssh/aws-work.pem
Host 14.222.10.23
User nathan
IdentityFile ~/.ssh/srv-work.pem
### Home ###
Host 13.124.22.54
User ec2-user
IdentityFile ~/.ssh/aws-home.pem
Host 15.31.2.1 devopstar.com
User root
IdentityFile ~/.ssh/srv-home.pem
这样一来,我们就可以通过 SSH 连接到给定的主机名或 IP 地址,所有密钥对配置和用户名选择都通过参考该文件来处理,效果非常显著。
您可能也注意到,在域名解析和 IP 地址解析都存在的情况下,我们可以在 IP 和 DNS 形式中提供多个主机标识符,从而涵盖两者。
概括
你有什么关于 SSH 的提高效率的小技巧吗?我很想了解一下!请在 Twitter 上联系我@nathangloverAUS,我们一起探讨吧。
文章来源:https://dev.to/t04glovern/streamline-your-ssh-workflow-with-ssh-config-4163