使用 SSH 配置文件管理与各种远程服务器的 SSH 连接

如果你甚至有点熟悉 SSH,你知道你可以用它来连接远程Linux系统。

使用 SSH 连接到远程系统很简单。 您需要做的就是使用这样的命令:

ssh [email protected]_IP 

这将连接到默认的 SSH 端口 22。如果需要,您也可以指定端口。

现在,如果您只有一台服务器,这一切都很简单。 即使您不记得服务器的 IP 地址,您也可以使用著名的终端键盘快捷键 Ctrl+R 对历史记录执行反向搜索,并找到您过去使用的 SSH 命令。

但是,当您要管理多台服务器时,事情就会变得复杂。 我不时连接到大约十台服务器。 有些是生产服务器,有些是测试服务器。

现在跟踪这些服务器并不容易。 即使我能从历史中找到 SSH 命令,也很难猜出哪个 IP 属于哪个服务器。

当然,我可以在 Linode、UpCloud、DigitalOcean 和 Google 上打开我的仪表板 Cloud 获取 IP 或在我的本地系统上保留一个列表。

更好更简单的方法是使用 SSH 配置文件。

使用 SSH 配置文件轻松连接到远程服务器

SSH 配置文件允许您为不同的主机配置创建不同的配置文件。 此类配置文件没有限制,您可以添加尽可能多的配置文件。

因此,如果您通过 SSH 连接到多个远程系统,创建 SSH 配置文件将是节省您时间的好方法。

让我告诉你如何使用它。

第 1 步:创建 SSH 配置文件

安装 SSH 时,您将自动创建一个 ~/.ssh 目录。 这个直接包含你的公钥,私钥一个 known_hosts 文件。 您的配置也存储在这里。

至少在 Ubuntu 上,默认情况下不会创建 SSH 配置文件。 您可以使用 touch 命令轻松创建此文件,如下所示:

touch ~/.ssh/config

第 2 步:在配置文件中添加 SSH 配置文件

现在您已经有了 SSH 配置文件,您可以使用 Vim 或 Nano 对其进行编辑。 让我给你看一个 example 您应该遵循的语法。

假设您连接到 IP 为 275.128.172.46 的服务器。 您的用户名是 Alice,服务器用于托管您的网站。 要加强 SSH 安全性,请使用端口 1500 而不是默认的 SSH 端口 22。

您可以通过以下方式在 ~/.ssh/config 文件中添加所有这些信息:

Host website
        Hostname 275.128.172.46
        User alice
        Port 1500

只需将信息保存在文件中即可。 无需重新启动任何服务。

现在,不要像这样写一个长命令:

ssh [email protected] -p 1500

您可以只使用此命令(制表符完成也可以):

ssh website

当您运行上述命令时,ssh 会在 ~/.ssh/config 中查找名为 Host 的网站。 如果它找到具有该名称的主机,它将获取所有相关信息并将其用于建立 SSH 连接。

你可能想知道一些事情,所以我会在这里提到它:

  • 输入主机信息时没有空格或制表符缩进限制。 空格或制表符缩进用于使配置文件易于理解。
  • 主机名可以是服务器的 IP 地址或可以在您的网络上解析的主机名。
  • 主机名、用户和端口等所有参数都是可选的。 但是,我个人建议至少保留主机名,因为大多数时候这是您需要的(并且您忘记了)。
  • 如果您的 SSH 配置文件配置错误,当您尝试使用它进行 SSH 连接时会导致错误。
  • 您不能在 SSH 配置中保存密码。 我建议将您的公共 SSH 密钥添加到服务器以便于访问。

第 3 步:在 SSH 配置文件中添加多个配置文件

上一步让您了解了如何添加 SSH 配置文件。 让我们通过在其中添加多个配置文件来进行下一步。

这是 SSH 配置文件现在的样子:

Host website
        Hostname 275.128.172.46
        User alice
        Port 1500
Host forum-server
        Hostname 275.128.172.47
        User alice

Host main-server
        Hostname 275.128.172.49

Host common-test-server
        Hostname test-server

Host *
        User root

这一次,我在其中添加了四个不同的 SSH 配置文件。

你有没有注意到 主持人 * 文件末尾的条目? 如果配置文件没有明确提及该参数,您可以使用此条目添加所有配置文件共有的参数。

因此,如果我尝试使用主服务器 SSH 配置文件,它将自动获取 root 用户。

ssh 主服务器 = ssh [email protected]

SSH 配置顺序

ssh 配置遵循以下顺序:

  • 命令行选项
  • 用户的配置文件 (~/.ssh/config)
  • 系统范围的配置文件 (/etc/ssh/ssh_config)

这意味着您输入的命令具有优先权,然后它会查看 ~/.ssh/config,然后是 /etc/ssh/ssh_config。

因此,如果要覆盖配置文件,可以使用 ssh 命令的 -o 选项来实现。

为了 example,如果我使用这个命令:

ssh -o "User=bob" website

它将使用用户 bob 而不是 ~/.ssh/config 中定义的用户 alice(在上一步中)。

SSH 配置还有很多内容

老实说,SSH 配置文件还有很多无法在一篇文章中涵盖的内容。 您可以使用名称/IP 匹配、子网等。

本文的范围是向您介绍 SSH 配置并帮助您创建 SSH 配置文件以轻松连接到各种远程 Linux 系统。

您可以随时参考 ssh_config 的手册页,以了解有关在创建 SSH 配置文件时可以使用的参数的更多信息。

我希望这个 SSH 技巧对你有所帮助。 如果您已经在使用 SSH 配置文件并且有一些不错的提示,请在评论部分与我们其他人分享。