介绍

SSH(安全外壳)是一种加密协议,用于通过不安全的网络安全地连接到远程服务器。它对于管理远程系统、网络以及与远程服务器的通信至关重要。

该协议提供客户端和服务器之间的安全连接。它可以管理其他计算机、传输文件以及在远程计算机上执行命令。

本指南介绍如何从 Windows、Linux 或 Mac 通过 SSH 连接到远程服务器。

如何从 Windows、Linux 或 Mac 通过 SSH 连接到远程服务器

先决条件

  • 远程计算机必须打开并具有网络连接。
  • 远程计算机的IP地址或名称。
  • 访问远程计算机的权限。
  • 允许 SSH 连接的防火墙设置。

什么是 SSH?

Secure Shell(有时称为Secure Socket Shell)是一种协议,允许您使用基于文本的界面安全地连接到远程计算机或服务器。

建立安全 SSH 连接后,shell 会话将启动。它允许通过在本地计算机上的客户端中键入命令来操作服务器。

系统网络管理员使用此协议来管理远程服务器和机器。任何需要以高度安全的方式远程管理计算机的人都会使用 SSH。

注意: SSH 和 SFTP 协议经常被混淆,但它们具有独特且不同的作用。了解SSH 和 SFTP 之间的异同。

SSH 是如何工作的?

客户端和服务器都参与建立安全的 SSH 通信通道。创建 SSH 连接依赖于以下组件和步骤:

  • 客户端组件。客户端组件是用于连接到另一台计算机的应用程序程序。客户端通过程序使用远程主机信息来发起连接。如果凭据得到验证,程序将建立加密连接。
  • 服务器端组件。在服务器端,SSH 守护程序不断侦听特定的TCP /IP端口(默认 SSH端口号为 22)以获取可能的客户端连接请求。一旦客户端通过定义的端口发起连接,SSH 守护程序就会使用其支持的软件及其协议版本进行响应。 SSH 通信的默认协议版本是版本 2。
  • 密钥交换。客户端和服务器交换加密密钥以创建安全的通信通道。密钥有助于加密后续通信。
  • 验证。建立连接时,客户端向服务器提供标识数据(作为用户名/密码或 SSH 密钥)。如果提供的凭据正确,SSH 将创建一个新的加密通信会话。

注意:有关更多详细信息,请查看我们有关SSH 工作原理的综合指南。

如何启用 SSH 连接

由于创建 SSH 连接需要客户端和服务器组件,因此请确保它们安装在本地和远程服务器上。以下部分演示如何根据操作系统安装客户端和服务器端组件。

在 Mac 上安装 SSH 组件

macOS 通常预装了 SSH 客户端。打开终端并使用以下命令进行检查:

ssh -v
macOS ssh -v 命令终端输出

该命令显示已安装的 SSH 版本。要使用第三方 SSH 应用程序(例如 OpenSSH),请使用以下 Homebrew 命令:

brew install openssh

注意:如果您尚未安装 Homebrew,请查看我们有关如何在 Mac 上安装 Homebrew的指南。

安装允许管理系统默认 SSH 组件的单独版本。或者,在 macOS 上安装 PuTTY以使用基于GUI的 SSH 客户端。

要在 macOS 上启用 SSH 服务器远程登录,请执行以下操作:

1. 进入系统设置

2. 单击左侧菜单中的常规。

3. 找到并打开共享

macOS 设置常规共享 UI

4. 启用远程登录以允许 SSH 访问设备。

UI 上的 macOS 共享远程登录选项

在 Linux 上安装 SSH 组件

某些Linux 发行版默认没有安装 SSH 组件。典型的解决方案是安装 OpenSSH 或 GUI 解决方案,例如Ubuntu 的 PuTTY 客户端

安装 OpenSSH 需要访问服务器上的终端和用于连接的计算机。安装和设置 OpenSSH 客户端和服务器组件的步骤如下:

1. 要安装客户端组件,请在客户端计算机上运行以下命令之一:

对于基于 Debian/Ubuntu 的系统:

sudo apt install openssh-client

对于基于 Red Hat 的系统(例如 CentOS 或 Fedora):

sudo dnf install openssh-clients
sudo yum install openssh-clients

2. 接下来,在服务器计算机上安装服务器组件:

对于基于 Debian/Ubuntu 的系统:

sudo apt install openssh-server

对于基于 Red Hat 的系统(例如 CentOS 或 Fedora):

sudo dnf install openssh-server
sudo yum install openssh-server

3. 安装组件后,SSH 服务自动启动。通过以下方式查看服务状态:

systemctl status sshd
systemctl status sshd 终端输出

如果该服务未运行,请使用以下命令运行它:

sudo systemctl start sshd

该命令不打印输出。

4. 要让服务在启动时自动启动,请运行:

sudo systemctl enable sshd

启用sshd服务会在引导过程中启动它。

注意:在某些系统上,sshd 是服务名称别名,命令将不起作用。在这种情况下,请替换sshd前面ssh命令中的 。

在 Windows 上安装 SSH 组件

SSH 不是 Windows 系统上的默认组件。 Windows 10 及更高版本包含本机 OpenSSH 应用程序。

要启用 SSH,请执行以下操作:

1. 打开设置->应用程序和功能->可选功能

Windows 设置 应用程序 可选功能 UI

2. 单击添加功能按钮。

Windows 可选功能 添加功能按钮 UI

3. 搜索并安装OpenSSH应用程序。

OpenSSH 服务器可选功能 Windows UI

或者,一种流行的选择是在 Windows 上安装 PuTTY或通过 WSL(适用于 Linux 的 Windows 子系统)功能使用 Linux 发行版。

如何通过 SSH 连接

在每台机器上安装并设置SSH客户端和服务器后,您就可以建立安全的远程连接。要连接到服务器,请执行以下操作:

1. 打开命令行/终端窗口并运行以下ssh 命令

ssh [username]@[host_ip_address]

提供用户名和主机 IP 地址。如果用户名与本地计算机相同,则从命令中省略用户名。要测试 SSH 是否已正确安装,请尝试创建到localhost的 SSH 连接。

2. 首次连接服务器时,会出现一条消息,要求确认连接。键入yes并按Enter键以确认本地计算机上的远程服务器标识。

3. 出现提示时提供密码,然后按Enter。当您键入时,屏幕不显示字符。

ssh kb@localhost 终端输出

数字签名ECDSA密钥指纹有助于验证机器并建立与远程服务器的连接。

如果您尝试连接的计算机位于同一网络上,则最好使用私有 IP 地址而不是公共 IP 地址。

注意:了解私有 IP 地址和公共 IP 地址之间的差异以及各自的角色。

此外,请确保正确的 TCP 端口侦听连接请求,并且端口转发设置正确。除非配置已更改,否则默认端口号为22 。您还可以在主机 IP 地址后附加端口号。

使用端口号时,以下两个示例有效:

ssh [username]@[host_ip_address]:[port]
ssh [username]@[host_ip_address] -p [port]

如果连接到远程服务器时出现任何问题,请确保:

  • 远程机器的IP地址正确。
  • SSH 守护程序正在侦听的端口未被防火墙阻止或错误转发。
  • 用户名和密码正确。
  • SSH软件安装正确。

注意:如果 SSH 响应消息“连接被拒绝”,请参阅我们的文章如何修复 SSH“连接被拒绝”错误以了解可能的原因和解决方案。

SSH 进一步步骤

使用 SSH 建立与服务器的连接后,还需要执行其他步骤来提高 SSH 安全性。应始终更改默认值;不更改它们会使服务器容易受到攻击。有些建议需要编辑SSH 配置文件

以下是确保 SSH 连接安全的实用步骤列表:

更改默认 TCP 侦听端口

不要使用默认端口 22,而是尝试更大的端口号。避免使用容易猜测的端口号,例如 222、2222 或 22222。

使用 SSH 密钥对进行身份验证

无密码 SSH 登录更安全,无需使用 SSH 密钥对即可登录(更快、更方便)。

在服务器上禁用基于密码的登录

如果您的密码被破解,这将消除使用它登录服务器的可能性。在关闭使用密码登录的选项之前,请确保使用密钥对的身份验证有效。

禁用根访问

删除对服务器的默认root 访问权限会使不需要的律师更难访问 root 帐户。相反,使用普通帐户和su - 命令切换到 root 用户。

使用 TCP 包装器

TCP 包装器可以限制对特定 IP 地址或主机名的访问。通过编辑/etc/hosts.allow/etc/hosts.deny文件配置可以连接的主机。请注意,第一个文件的权限高于第二个文件。

例如,要允许对单个主机进行 SSH 访问,请首先通过在/etc/hosts.deny文件中添加以下两行来拒绝所有主机:

sshd : ALL
ALL : ALL
/etc/hosts.deny 文件内容

然后,在/etc/hosts.allow文件中添加一行,其中包含 SSH 服务允许的主机:

sshd:10.10.0.5,本地

/etc/hosts.allow 文件内容

主机可以是 IP 地址、IP 范围或主机名。

保护登录信息并采用多层安全性

使用不同的方法来限制对服务器的 SSH 访问,或使用阻止任何人通过暴力方式获取访问权限的服务。Fail2ban就是此类服务的一个例子。

通过 SSH 的 VNC

在虚拟网络计算 (VNC) 环境中,可以通过命令和 PuTTY使用 SSH隧道来加密连接。ssh

要通过 SSH 建立 VNC 连接隧道,请在命令行/终端中运行以下命令:

ssh -L [local_address]:[local_port]:[VNC_server_address]:[VNC_server_port] -N -f -l [username] [hostname_or_IP]

该命令执行以下操作:

  • ssh。在本地计算机上启动 SSH 客户端程序,并启用与远程计算机上的 SSH 服务器的安全连接。
  • -L [local_address]:[local_port]:[VNC_server_address]:[VNC_server_port]。本地计算机上客户端的本地地址和端口将转发到远程计算机的指定服务器主机和端口。
  • -N。转发端口而不执行远程命令。
  • -f。提供密码后将 SSH 发送到后台。这允许在本地终端中键入命令。
  • -l [username]。用于连接 SSH 服务器的用户名。
  • [hostname_or_IP]。 SSH 服务器的主机名或 IP。

您还可以使用 PuTTY 通过 SSH 隧道连接到远程服务器。在 PuTTY 配置窗口中,执行以下操作:

1. 转至连接-> SSH ->隧道。

2. 在源端口字段中输入源端口号。

3. 在“目标”字段中键入 VNC 服务器地址和端口。

ssh腻子配置

4. 像平常一样启动 SSH 会话。

5. 使用您选择的 VNC 客户端连接到您的服务器。

结论

您现在应该能够使用 SSH 连接到远程服务器还有许多其他方法可以在两台远程计算机之间建立连接,但这里介绍的方法是最常见和最安全的。

By zk

一个程序员

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注