如何使用快捷方式和自动完成加速 SSH 访问

如果您使用 Linux 或管理远程服务器(例如 AWS、DigitalOcean 上的云服务器,甚至网络上的本地计算机),您可能会使用如下命令连接到它们:

ssh  -p 2222

让我们把它分解一下,这样就非常清楚了:

  • ssh:这是启动与另一台计算机的安全连接的命令。
  • ravi:这是您在远程服务器上登录时使用的用户名。
  • 192.168.1.50:这是服务器的 IP 地址(有点像它的电话号码)。
  • -p 2222:这告诉 SSH 在端口 2222 上连接(服务器可能不使用默认端口 22)。

现在,这句话一开始可能看起来很短,但是每天输入它并为多个服务器执行它很快就会变得令人沮丧。

随着时间的推移,实际感觉是这样的:

  • 你必须记住每个服务器的IP地址(很容易忘记!)。
  • 您必须键入或复制粘贴正确的端口号。
  • 如果您使用 SSH 密钥,您可能还需要添加-i /path/to/key.pem到命令。
  • 您对多台服务器(甚至每天可能有数十台)重复执行此操作。

假设您管理三台服务器:

ssh  -p 2200
ssh  -p 2222
ssh  -i ~/.ssh/dev-key.pem

现在想象一下,每天多次手动输入所有内容。这不仅令人烦恼,而且还容易出错。一个错误的 IP 或端口,您就会浪费时间进行故障排除。

目标:使用简单的快捷方式

如果您可以输入一些简短的内容,例如:

ssh server1
OR
ssh devbox

并立即连接到正确的服务器,并已为您填写所有详细信息(IP、端口、用户名、密钥)?

  • 无需记住IP
  • 无需重新输入端口
  • 无需添加 SSH 密钥路径
  • 只需一个简单的昵称即可连接

在这个易于理解的指南中,我将向您展示如何自动完成像专业人士一样,这样您就不必一次又一次地输入又长又无聊的命令。

如何在 Linux 中设置 SSH 快捷方式

要创建 SSH 快捷方式,您需要创建或打开~/.ssh/config您的主目录中的文件。

nano ~/.ssh/config

现在文件已打开,让我们创建您的第一个 SSH 快捷方式。

Host server1
  HostName 192.168.122.74
  User ravi
  Port 2222

让我们分解每一行:

  • Host– 这是您将在终端中使用的昵称(您可以将其命名为任何名称!)。
  • HostName– 您的远程服务器的 IP 地址或域名。
  • User– 您用于登录该服务器的用户名。
  • Port– SSH 端口号(默认为 22,仅当您的服务器使用自定义端口时才使用它)。

按Ctrl + X, 然后Y,并击中Enter保存并退出文件。

现在,无需键入长 SSH 命令,只需运行:

ssh server1

就是这样 – 您已连接到您的服务器!

使用简单命令连接 SSH 服务器

该快捷方式使用您在配置文件中保存的所有详细信息(用户名、IP、端口),因此您不必每次都记住或键入它们。

想要添加更多服务器吗?

您可以重复相同的过程并添加更多服务器,如下所示:

Host aws-server
  HostName 3.115.120.100
  User ec2-user
  Port 22
  IdentityFile ~/.ssh/aws.pem

Host dev-machine
  HostName 10.0.0.101
  User ubuntu

每个块都以唯一的开始Host名称并包含该特定服务器的详细信息。

然后像这样连接:

ssh aws-server
ssh dev-machine

到目前为止,我们已经学习了如何使用以下命令设置 SSH 命令的快捷方式~/.ssh/config文件,但我们每次还是要输入密码。

为了避免这种情况,我们需要使用 SSH 密钥,这是一种无需使用密码即可更安全、更快速地登录远程服务器的方法。

它们的作用就像锁和钥匙:

  • 私钥(您的个人密钥):保留在您的本地计算机上。
  • 公钥(您的 ID):出现在服务器上。它告诉服务器,“嘿,如果有人有匹配的私钥,就让他们进来!”。

生成新的 SSH 密钥对(如果您没有)

如果您看到类似的文件id_rsa或者id_ed25519在你的.ssh目录,这意味着您已经有了 SSH 密钥对。如果没有,您可以使用以下命令生成新的 SSH 密钥对。

ssh-keygen -t rsa -b 4096 -C ""

现在您的 SSH 密钥已创建于~/.ssh/id_rsa(您的私钥)和~/.ssh/id_rsa.pub(您的公钥)。

创建新的 SSH 密钥对

接下来,将公钥复制到您的服务器;在这里,系统将最后一次要求您输入密码。

ssh-copy-id -i ~/.ssh/id_rsa.pub 

现在打开你的/.ssh/config文件并添加身份文件以及您的私钥文件的路径。

Host server1
  HostName 192.168.122.74
  User ravi
  Port 2222
  IdentityFile ~/.ssh/id_rsa

下次,当你尝试SSH,它会自动使用您的私钥并让您登录,而无需输入密码。

ssh server1
无需密码即可连接 SSH 服务器

奖励:SSH 主机的 Tab 补全

您可以在您的 SSH 昵称中启用制表符补全功能~/.bashrc文件。

nano ~/.bashrc

在最后添加这一行:

complete -o default -o nospace -F _ssh ssh

保存并运行:

source ~/.bashrc

现在输入ssh并按TAB,这将显示您在配置中添加的所有主机名。

最后的想法

对于任何使用服务器的人来说,使用 SSH 配置文件是最简单但最强大的技巧之一,因为它可以节省时间、减少错误并帮助您改进 SSH 工作流程。

想要更进一步吗?阅读我们的文章:

  • 使用和也有 SSH 配置