zhcn 技术 手机 如何在 Linux 上使用 SSH 连接到远程服务器

如何在 Linux 上使用 SSH 连接到远程服务器

如果您是系统管理领域的新手,并且需要维护和监控远程服务器,那么掌握用于远程访问的 Secure Shell (SSH) 非常重要。 SSH 允许您从任何地方安全地连接和管理您的服务器,确保高效管理并提高安全性。因此,在本指南中,我们将向您展示如何在 Linux 上使用 ssh 连接到远程服务器。

如何在 Linux 上使用 SSH 连接到远程服务器
如何在 Linux 上使用 SSH 连接到远程服务器

SSH 是什么意思?

SSH 代表“ Secure Shell ”,是一种加密的网络协议,可用于连接到 Windows、Linux 和 macOS 上的远程服务器。它提供了一个安全且经过身份验证的通道,通过该通道可以在客户端和服务器之间传输数据。 SSH 还允许您安全地登录到远程系统。 SSH 的一些主要功能包括:

  • 加密:使用 SSH 交换的所有数据都使用对称加密、非对称加密或非常强的加密算法的哈希进行完全加密,从而确保用户的数据受到保护。此类加密可确保登录凭据、命令和文件等敏感数据不会被黑客或威胁行为者拦截或更改。
  • 身份验证:SSH 使用身份验证来验证传入的登录请求。它支持两种类型的身份验证协议:
    • 基于密码的身份验证 – 在此身份验证模式下,用户通过输入注册的用户名和密码来验证自己的身份。这是使用 SSH 连接到远程 Linux 服务器的最常见方法。
    • 基于 SSH 密钥对的身份验证 – 该身份验证模式会生成一对加密密钥。公钥存储在远程服务器上,私钥存储在用户的系统上。当用户尝试登录时,密钥用于验证用户的身份。这种方式安全性高,不需要用户使用密码登录。
  • 平台独立性:SSH 允许您连接到任何远程服务器,无论主机操作系统如何。适用于 Linux、Windows 和 macOS。
  • 多功能性:不仅可以使用SSH登录远程系统,还可以使用scp命令通过ssh发送文件。
如何在 Linux 上使用 SSH 连接到远程服务器
如何在 Linux 上使用 SSH 连接到远程服务器

如何在 Linux 上安装 OpenSSH

有许多不同类型的 SSH 软件可供服务器和客户端使用,例如 Teleport、wolfSSH 和 OpenSSH。然而,最常见的 SSH 软件是 OpenSSH。 OpenBSD Secure Shell 或众所周知的 OpenSSH,于 1999 年 12 月 1 日首次作为跨平台、免费、开源软件发布。下面我们展示了在Linux上安装OpenSSH的过程。

安装 OpenSSH 客户端

要连接到远程 Linux 服务器,您的系统上必须安装“OpenSSH 客户端”。使用以下步骤进行安装:-

1. 使用特定于您的 Linux 发行版的命令在您的系统上安装 OpenSSH 客户端。本指南使用基于 Debian 的系统。

  • 对于基于 Debian 的系统:
 sudo apt-get install openssh-client
  • 对于基于 Fedora 的系统:
 sudo dnf install openssh-client

2. 检查SSH客户端是否安装正确,执行以下命令:您将得到类似于下面的屏幕截图的输出。

 ssh

安装 OpenSSH 服务器

当您使用流行的云计算提供商创建新的远程服务器实例时,它本质上预装了服务器端 SSH 软件(通常是 OpenSSH Server)。但是,对于“本地”服务器,您可能需要手动安装。要在远程服务器上安装 OpenSSH 服务器,请按照下列步骤操作:

1. 首先,使用以下命令检查您的系统上是否安装了 OpenSSH 服务器:

 ssh localhost

如果您看到此类输出,则意味着 SSH 服务器尚未安装,您需要手动安装。

2. 使用特定于发行版的命令安装 OpenSSH 服务器。

  • 基于 Debian 的 Linux 系统:
 sudo apt-get install openssh-server
  • 基于 RedHat/Fedora 的系统:
 sudo dnf install openssh-server

3. 安装后,使用以下命令检查 SSH 服务器是否正在运行:在某些情况下,SSH 服务器会自动启动,无需您运行任何命令。

 sudo service ssh status

如果尚未激活,您将看到输出“Inactive (Dead)”。

4. 如果它显示为非活动状态,请使用以下命令将其激活:

 sudo service ssh start

5. 要检查它是否正在运行,请再次使用以下命令:

 sudo service ssh status

这次,您会在名称前面看到一个绿点和“活动”字样。

如何在 Linux 上使用 SSH 连接到远程服务器
如何在 Linux 上使用 SSH 连接到远程服务器

Linux 上的 SSH 命令:语法和选项

现在您已经启动并运行了 SSH,让我们看一下语法以及可以与之结合使用的不同选项。

 ssh <options> <username>@<remote_server_ip_address_or_domain_name>

可以与 SSH 命令结合使用的常见选项包括:

选项解释
-4仅允许使用 IPv4 地址的连接。
-6启用 GUI 转发(适用于基于 X11 的系统)
-一个启用身份验证代理连接转发。
-C压缩所有正在传输的数据以提高传输速度。
-p用于指定连接远程服务器的端口号。
-X启用 GUI 转发(适用于基于 X11 的系统)
如何在 Linux 上使用 SSH 连接到远程服务器
如何在 Linux 上使用 SSH 连接到远程服务器

使用 SSH 连接到远程 Linux 服务器

现在您已经了解了 SSH 命令的语法和选项,让我们看看如何使用 SSH 连接到远程 Linux 服务器。请使用下述方法之一。

使用 SSH 命令连接

1. 首先,记下您要连接的远程服务器的 IP 地址。如果您不知道自己的 IP 地址,请使用以下命令打印您的公共 IP 地址。

 curl ifconfig.me

如果您的系统与远程服务器连接到同一网络,请使用以下命令:

 ip addr

为了增加安全性,我们建议通过 VPN 连接到远程服务器。查看我们的指南,了解 VPN 是什么及其工作原理。

2. 接下来,使用以下命令连接到远程服务器:

 ssh <username>@<remote_server_ip_address_or_domain_name>

3. 输入您要登录的用户名的密码,然后按 Enter。

4. 成功登录远程服务器后,您将看到如下所示的欢迎屏幕。

在本例中,远程服务器 IP 为“172.105.253.48”,用户名为“root”。

使用您的 SSH 密钥登录

基于 SSH 密钥的身份验证比基于密码的身份验证提供更多安全性和便利性,但需要更多的初始设置。这涉及使用位于远程服务器内的公钥和存储在客户端上的私钥的加密密钥对进行身份验证,从而消除了用户输入密码的需要。要使用 SSH 配置无密码登录,请按照下列步骤操作:

1. 使用以下命令在本地系统上生成新的 SSH 密钥对:

 ssh-keygen -t rsa

该命令使用著名的RSA(Rivest-Shamir-Adleman)算法来生成密钥对。 Diffie – 您可以使用您选择的任何其他算法,例如 Hellman 密钥交换 (DHE) 或数字签名算法 (DSA)。

2. 系统将要求您指定保存密钥的位置。输入要保存的路径或将其留空以将其保存到默认位置“~/.ssh/id_rsa”,然后按 Enter。

3. 接下来,系统将要求您输入密码。输入强密码或将其留空并按 Enter。

4. 生成密钥后,您将看到一条带有密钥“randomart”的成功消息。

5. 接下来,使用此命令将公共 SSH 密钥传输到远程服务器。您还可以使用 scp 命令安全地传输 RSA 公钥。

 ssh-copy-id <username>@<remote_server>

6. 完成上述步骤后,使用 SSH 命令(语法如下)无需密码即可登录:

 ssh <username>@<remote_server_ip_address_or_domain_name>

使用 SSH 配置文件连接到服务器

每当建立新的 SSH 连接时,SSH 命令都会根据 SSH 配置文件中存储的配置运行。通过一些编辑魔法,您可以通过此 SSH 配置文件指定要连接的远程 Linux 服务器和端口等内容。

1. 在 Linux 或任何其他 Linux 文本编辑器中使用 Nano 命令打开 ssh 配置文件。

 sudo nano ~/.ssh/config

这将打开您的用户特定的配置文件。要打开所有用户的配置文件,请使用以下命令:

 sudo nano /etc/ssh/ssh_config

2. 现在使用以下语法编辑配置文件:

 Host <remote_server_1_name>
    ssh_option_1 value
    ssh_option_2 value

Host <remote_server_2_name>
    ssh_option_1 value
    ssh_option_2 value

在上面的语法中,ssh_options 与与 ssh 命令组合的选项相同。这是一个配置文件示例:

 Host remote_1
    HostName 192.168.1.10
    User test1
    Port 22

Host remote2
    HostName 172.105.253.48
    User root
    Port 22

我们创建了两个远程服务器条目及其选项。您可以指定远程服务器的数量及其选项。

3. 编辑完配置文件后,保存并退出编辑器。

4. 要使用 SSH 配置文件连接到远程服务器,请使用以下语法:

 ssh <remote_server_name>

例如,要连接到remote2服务器,请使用以下命令:

 ssh remote2

常问问题

如何列出 Linux 上的所有 SSH 会话?

要列出 Linux 上的所有 SSH 连接,请使用以下命令: ss -t -a

SSH 总是在端口 22 上吗?

默认情况下,SSH 服务器允许端口 22 上的传入连接。要在不同端口上启用 SSH,请在 Linux 文本编辑器中打开 /etc/ssh/ssh_config 文件并将端口设置为 1024 到 65536 之间的任意值。

如何在 Linux 上使用 SSH 连接到远程服务器
如何在 Linux 上使用 SSH 连接到远程服务器

如果您是系统管理领域的新手,并且需要维护和监控远程服务器,那么掌握用于远程访问的 Secure Shell (SSH) 非常重要。 SSH 允许您从任何地方安全地连接和管理您的服务器,确保高效管理并提高安全性。因此,在本指南中,我们将向您展示如何在 Linux 上使用 ssh 连接到远程服务器。

如何在 Linux 上使用 SSH 连接到远程服务器
如何在 Linux 上使用 SSH 连接到远程服务器

SSH 是什么意思?

SSH 代表“ Secure Shell ”,是一种加密的网络协议,可用于连接到 Windows、Linux 和 macOS 上的远程服务器。它提供了一个安全且经过身份验证的通道,通过该通道可以在客户端和服务器之间传输数据。 SSH 还允许您安全地登录到远程系统。 SSH 的一些主要功能包括:

  • 加密:使用 SSH 交换的所有数据都使用对称加密、非对称加密或非常强的加密算法的哈希进行完全加密,从而确保用户的数据受到保护。此类加密可确保登录凭据、命令和文件等敏感数据不会被黑客或威胁行为者拦截或更改。
  • 身份验证:SSH 使用身份验证来验证传入的登录请求。它支持两种类型的身份验证协议:
    • 基于密码的身份验证 – 在此身份验证模式下,用户通过输入注册的用户名和密码来验证自己的身份。这是使用 SSH 连接到远程 Linux 服务器的最常见方法。
    • 基于 SSH 密钥对的身份验证 – 该身份验证模式会生成一对加密密钥。公钥存储在远程服务器上,私钥存储在用户的系统上。当用户尝试登录时,密钥用于验证用户的身份。这种方式安全性高,不需要用户使用密码登录。
  • 平台独立性:SSH 允许您连接到任何远程服务器,无论主机操作系统如何。适用于 Linux、Windows 和 macOS。
  • 多功能性:不仅可以使用SSH登录远程系统,还可以使用scp命令通过ssh发送文件。
如何在 Linux 上使用 SSH 连接到远程服务器
如何在 Linux 上使用 SSH 连接到远程服务器

如何在 Linux 上安装 OpenSSH

有许多不同类型的 SSH 软件可供服务器和客户端使用,例如 Teleport、wolfSSH 和 OpenSSH。然而,最常见的 SSH 软件是 OpenSSH。 OpenBSD Secure Shell 或众所周知的 OpenSSH,于 1999 年 12 月 1 日首次作为跨平台、免费、开源软件发布。下面我们展示了在Linux上安装OpenSSH的过程。

安装 OpenSSH 客户端

要连接到远程 Linux 服务器,您的系统上必须安装“OpenSSH 客户端”。使用以下步骤进行安装:-

1. 使用特定于您的 Linux 发行版的命令在您的系统上安装 OpenSSH 客户端。本指南使用基于 Debian 的系统。

  • 对于基于 Debian 的系统:
 sudo apt-get install openssh-client
  • 对于基于 Fedora 的系统:
 sudo dnf install openssh-client

2. 检查SSH客户端是否安装正确,执行以下命令:您将得到类似于下面的屏幕截图的输出。

 ssh

安装 OpenSSH 服务器

当您使用流行的云计算提供商创建新的远程服务器实例时,它本质上预装了服务器端 SSH 软件(通常是 OpenSSH Server)。但是,对于“本地”服务器,您可能需要手动安装。要在远程服务器上安装 OpenSSH 服务器,请按照下列步骤操作:

1. 首先,使用以下命令检查您的系统上是否安装了 OpenSSH 服务器:

 ssh localhost

如果您看到此类输出,则意味着 SSH 服务器尚未安装,您需要手动安装。

2. 使用特定于发行版的命令安装 OpenSSH 服务器。

  • 基于 Debian 的 Linux 系统:
 sudo apt-get install openssh-server
  • 基于 RedHat/Fedora 的系统:
 sudo dnf install openssh-server

3. 安装后,使用以下命令检查 SSH 服务器是否正在运行:在某些情况下,SSH 服务器会自动启动,无需您运行任何命令。

 sudo service ssh status

如果尚未激活,您将看到输出“Inactive (Dead)”。

4. 如果它显示为非活动状态,请使用以下命令将其激活:

 sudo service ssh start

5. 要检查它是否正在运行,请再次使用以下命令:

 sudo service ssh status

这次,您会在名称前面看到一个绿点和“活动”字样。

如何在 Linux 上使用 SSH 连接到远程服务器
如何在 Linux 上使用 SSH 连接到远程服务器

Linux 上的 SSH 命令:语法和选项

现在您已经启动并运行了 SSH,让我们看一下语法以及可以与之结合使用的不同选项。

 ssh <options> <username>@<remote_server_ip_address_or_domain_name>

可以与 SSH 命令结合使用的常见选项包括:

选项解释
-4仅允许使用 IPv4 地址的连接。
-6启用 GUI 转发(适用于基于 X11 的系统)
-一个启用身份验证代理连接转发。
-C压缩所有正在传输的数据以提高传输速度。
-p用于指定连接远程服务器的端口号。
-X启用 GUI 转发(适用于基于 X11 的系统)
如何在 Linux 上使用 SSH 连接到远程服务器
如何在 Linux 上使用 SSH 连接到远程服务器

使用 SSH 连接到远程 Linux 服务器

现在您已经了解了 SSH 命令的语法和选项,让我们看看如何使用 SSH 连接到远程 Linux 服务器。请使用下述方法之一。

使用 SSH 命令连接

1. 首先,记下您要连接的远程服务器的 IP 地址。如果您不知道自己的 IP 地址,请使用以下命令打印您的公共 IP 地址。

 curl ifconfig.me

如果您的系统与远程服务器连接到同一网络,请使用以下命令:

 ip addr

为了增加安全性,我们建议通过 VPN 连接到远程服务器。查看我们的指南,了解 VPN 是什么及其工作原理。

2. 接下来,使用以下命令连接到远程服务器:

 ssh <username>@<remote_server_ip_address_or_domain_name>

3. 输入您要登录的用户名的密码,然后按 Enter。

4. 成功登录远程服务器后,您将看到如下所示的欢迎屏幕。

在本例中,远程服务器 IP 为“172.105.253.48”,用户名为“root”。

使用您的 SSH 密钥登录

基于 SSH 密钥的身份验证比基于密码的身份验证提供更多安全性和便利性,但需要更多的初始设置。这涉及使用位于远程服务器内的公钥和存储在客户端上的私钥的加密密钥对进行身份验证,从而消除了用户输入密码的需要。要使用 SSH 配置无密码登录,请按照下列步骤操作:

1. 使用以下命令在本地系统上生成新的 SSH 密钥对:

 ssh-keygen -t rsa

该命令使用著名的RSA(Rivest-Shamir-Adleman)算法来生成密钥对。 Diffie – 您可以使用您选择的任何其他算法,例如 Hellman 密钥交换 (DHE) 或数字签名算法 (DSA)。

2. 系统将要求您指定保存密钥的位置。输入要保存的路径或将其留空以将其保存到默认位置“~/.ssh/id_rsa”,然后按 Enter。

3. 接下来,系统将要求您输入密码。输入强密码或将其留空并按 Enter。

4. 生成密钥后,您将看到一条带有密钥“randomart”的成功消息。

5. 接下来,使用此命令将公共 SSH 密钥传输到远程服务器。您还可以使用 scp 命令安全地传输 RSA 公钥。

 ssh-copy-id <username>@<remote_server>

6. 完成上述步骤后,使用 SSH 命令(语法如下)无需密码即可登录:

 ssh <username>@<remote_server_ip_address_or_domain_name>

使用 SSH 配置文件连接到服务器

每当建立新的 SSH 连接时,SSH 命令都会根据 SSH 配置文件中存储的配置运行。通过一些编辑魔法,您可以通过此 SSH 配置文件指定要连接的远程 Linux 服务器和端口等内容。

1. 在 Linux 或任何其他 Linux 文本编辑器中使用 Nano 命令打开 ssh 配置文件。

 sudo nano ~/.ssh/config

这将打开您的用户特定的配置文件。要打开所有用户的配置文件,请使用以下命令:

 sudo nano /etc/ssh/ssh_config

2. 现在使用以下语法编辑配置文件:

 Host <remote_server_1_name>
    ssh_option_1 value
    ssh_option_2 value

Host <remote_server_2_name>
    ssh_option_1 value
    ssh_option_2 value

在上面的语法中,ssh_options 与与 ssh 命令组合的选项相同。这是一个配置文件示例:

 Host remote_1
    HostName 192.168.1.10
    User test1
    Port 22

Host remote2
    HostName 172.105.253.48
    User root
    Port 22

我们创建了两个远程服务器条目及其选项。您可以指定远程服务器的数量及其选项。

3. 编辑完配置文件后,保存并退出编辑器。

4. 要使用 SSH 配置文件连接到远程服务器,请使用以下语法:

 ssh <remote_server_name>

例如,要连接到remote2服务器,请使用以下命令:

 ssh remote2

常问问题

如何列出 Linux 上的所有 SSH 会话?

要列出 Linux 上的所有 SSH 连接,请使用以下命令: ss -t -a

SSH 总是在端口 22 上吗?

默认情况下,SSH 服务器允许端口 22 上的传入连接。要在不同端口上启用 SSH,请在 Linux 文本编辑器中打开 /etc/ssh/ssh_config 文件并将端口设置为 1024 到 65536 之间的任意值。

如何在 Linux 上使用 SSH 连接到远程服务器
如何在 Linux 上使用 SSH 连接到远程服务器