发布于 2026-01-06 0 阅读
0

使用 .ssh/config 简化您的 SSH 工作流程

使用 .ssh/config 简化您的 SSH 工作流程

这篇文章最初发表在DevOpStar上。点击此处查看原文。

如果你是一名系统管理员,或者每天都要使用多个不同的 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
Enter fullscreen mode Exit fullscreen mode

需要记住的不仅仅是用户名;如果你有任何合理的安全意识,你或你的公司可能都有需要加载到系统中的 SSH 密钥,用于向目标服务器进行身份验证。

随着时间的推移,你会积累来自各处的密钥,这变成了一场寻找有效密钥的游戏,直到你最终感到沮丧,并将安全性放在一边,因为你在每个服务器上都使用相同的密钥对。

确实有一些读者可能所在公司会为他们管理密钥库,并为每个系统部署一个密钥,该密钥的有效权限与员工的角色绑定。虽然这种方法完全有效,但并非适用于所有人的情况。

引入 .ssh/config 文件

用户主路径下的 .ssh 文件夹的配置文件可以解决我们大多数(如果不是全部)常见问题;但我发现 IT 专业人员和开发人员要么不知道这一点,要么很少使用它。

基本配置

我通常会在系统中看到或设置的最简单的配置如下

Host *
  AddKeysToAgent yes
  IdentityFile ~/.ssh/id_rsa
Enter fullscreen mode Exit fullscreen mode

此配置定义了以下内容:

  1. 主机*:此配置应应用于所有 SSH 连接。
  2. AddKeysToAgent:当 SSH 代理提示使用密钥时,它应该加载并记住该密钥,直到守护进程重新启动或系统重新启动(从而避免每天输入 100 次密码)。
  3. 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
Enter fullscreen mode Exit fullscreen mode

这样一来,我们就可以通过 SSH 连接到给定的主机名或 IP 地址,所有密钥对配置和用户名选择都通过参考该文件来处理,效果非常显著。

您可能也注意到,在域名解析和 IP 地址解析都存在的情况下,我们可以在 IP 和 DNS 形式中提供多个主机标识符,从而涵盖两者。


概括


你有什么关于 SSH 的提高效率的小技巧吗?我很想了解一下!请在 Twitter 上联系我@nathangloverAUS,我们一起探讨吧。

文章来源:https://dev.to/t04glovern/streamline-your-ssh-workflow-with-ssh-config-4163