Secure Shell (SSH) 是每个 Linux 用户在某个时候可能会使用的工具之一。使用 SSH,您可以轻松(且安全地)登录到远程服务器和桌面,以管理、开发和检查这些机器。
使用 SSH 很简单:
ssh jack@192.168.1.11
甚至只是:
SSH 192.168.1.11
当然,您可以将 IP 地址换成您需要访问的机器的地址(或域)。
当您使用不同的配置(例如不同的用户名或 SSH 身份验证密钥)访问大量机器时,SSH 会变得不那么简单。想象一下,如果您每天必须登录 20 台左右不同的服务器。您不仅需要跟踪这些服务器的 IP 地址或域,还必须记住使用了哪些用户名或身份验证密钥。仅这一点就可能会变得相当压倒性。
值得庆幸的是,SSH 允许您创建一个配置文件来容纳所有这些信息。因此,您不必输入ssh olivia@192.168.1.100 -p 2222之类的内容,只需输入ssh web1即可。
让我向您展示这是如何完成的。
创建 SSH 配置文件
登录到您用来通过 SSH 连接到所有这些远程机器的 Linux 机器。打开一个终端窗口并使用图 A所示的命令创建新的配置文件。
图A
由于这是一个新文件,它将是一个空白画布,我们可以开始向其中添加服务器配置。假设您要配置以下远程服务器:
-
web1 在 192.168.1.100 与用户 olivia
-
db1 位于 192.168.1.101,用户 nathan 和 SSH 密钥 ~/.ssh/id_nathan
-
docker1 在 192.168.1.102,用户 lilly 在端口 2222
我们的第一个条目将如下所示:
主机“web1”
主机名“192.168.1.100”
用户 olivia
如果此时保存并关闭文件,您可以使用以下命令通过 SSH 连接到 192.168.1.100:
ssh web1
让我们继续配置接下来的两个条目,如下所示:
主机 db1
主机名“192.168.1.101”
用户 nathan
身份文件 ~/.ssh/id_nathan
公钥认证是主机 docker1
主机名“192.168.1.102”
用户礼来
端口 2222
保存并关闭文件。您现在可以使用以下命令将 shell 保护到这些机器中:
ssh web1ssh db1ssh docker1
您可以为每个主机使用所需的任何昵称,让它们令人难忘,这样您就不会忘记您要访问的机器,并且必须不断引用配置文件来破坏您的记忆。
但是,假设您在所有远程服务器上使用相同的用户名,但在本地计算机上使用不同的用户名。例如,您的本地计算机用户名可能是 jack,但您已在所有远程服务器上创建了 admin 用户。您可以使用 IP 地址中的通配符为所有这些服务器创建一个条目,如下所示:
主机 192.168.1.*用户管理员
上述配置将放置在配置文件的顶部。
然后,您可以根据需要单独配置每个服务器,而忽略"用户"选项。例如,如果 192.168.1.200 和 192.168.1.201 的两个服务器都使用 SSH 密钥认证,您可以像这样配置条目:
主机 web2
主机名 192.168.1.200
身份文件 ~/.ssh/id_admin
公钥认证是主机 web3
主机名 192.168.1.201
身份文件 ~/.ssh/id_admin
公钥认证是
因为我们将用户 admin 应用于 IP 地址方案 192.168.1.x 上的整个机器范围,所以该用户名将应用于所有连接。您还可以根据需要通过添加用户配置行来覆盖该全局配置。
SSH 配置文件允许其他几个选项(所有这些都可以在官方 SSH 配置文档中阅读【https://www.ssh.com/academy/ssh/config】),但是上面显示的这些示例应该是您使用 SSH 配置文件所需的一切。
这就是使用 SSH 配置文件帮助您更轻松地使用 Secure Shell 进行远程访问的全部内容。