如果你甚至有点熟悉 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 配置文件并且有一些不错的提示,请在评论部分与我们其他人分享。