全面指南:SSH 端口号与 SSH 工作原理
目录
- SSH 中的端口是什么?
- SSH(Secure Shell)如何在 22 端口上工作?
- SSH 端口转发完整指南
- 如何生成 SSH 密钥?
- 在 Linux 系统上管理 SSH 的命令
- 如何通过 SSH 登录 Linux 服务器
- 如何在 UFW 防火墙中配置 SSH 22 端口?
- 适用于 Linux 和 Windows 的 SSH 实现
- SSH 默认端口号是多少?
- 如何将默认 SSH 22 端口更改为其他端口号?
- 结论
SSH 的默认端口号是 22(TCP)。SSH 使用 22 端口在客户端与服务器之间建立加密连接。
在当今数字时代,网络攻击的频率正迅速上升,包括数据泄露、黑客入侵和身份盗用等威胁。为了防范这些犯罪行为,每个组织都需要借助 SSH 等技术,确保设备或计算机系统之间的数据安全传输。在本文中,您将详细了解 SSH 协议、SSH 端口号、默认 SSH 端口及其工作原理。此外,您还将了解保障网络安全通信的各种加密方法、认证流程、命令和关键组件。
SSH 中的端口是什么?
在网络中,“端口”是计算机或网络内部用于通信的逻辑或虚拟端点。端口使不同的服务和应用程序能够共享同一物理网络连接,同时保持各自独立的通信通道。
范围在 0-1023 之间的知名端口被视为特定服务的“保留端口”,例如 HTTP(80 端口)、HTTPS(443 端口)、FTP(21 端口)和 SSH(22 端口)。这些标准化分配有助于确保各网络之间的一致性。
SSH 端口是计算机上用于 Secure Shell 协议连接的特定端点。默认情况下,当您在 Linux 中运行命令、让两台服务器通过网络通信时,SSH 使用 22 端口。所有通信都经过指定的端口号,但您可以更改该端口,将其分配为任何其他可用的 SSH 端口号。这种灵活性常被用来提升安全性,减少针对默认端口的自动化攻击。
SSH 使用 TCP 还是 UDP?
SSH 仅通过 TCP(传输控制协议)运行,而不使用 UDP。TCP 提供可靠的、面向连接的通信通道,确保所有传输的数据按正确顺序送达,不丢失也不重复。
这种可靠性对 SSH 至关重要,因为 SSH 用于远程服务器管理、命令执行和安全数据传输。建立 SSH 连接时,客户端与服务器之间会创建一个持久的 TCP 会话,通常使用 22 端口,若已配置则使用自定义端口。
与不保证数据包送达及顺序的 UDP 不同,TCP 包含错误检查、重传和流量控制机制。结合 SSH 加密,这同时保证了数据完整性与安全性,使 TCP 成为标准 SSH 连接唯一合适的传输协议。
范围在 0-1023 之间的知名端口被称为特定服务的“保留端口”,例如 HTTP(80 端口)、HTTPS(443 端口)、FTP(21 端口)和 SSH(22 端口)。这些标准化分配有助于确保各网络之间的一致性。
SSH 端口是计算机上用于 Secure Shell 协议连接的特定端点。默认情况下,当您在 Linux 中运行命令、让两台服务器通过网络通信时,SSH 使用 22 端口。
所有通信都经过指定的端口号,但您可以更改该端口,将其分配为任何其他可用的 SSH 端口号。SSH 端口为管理或访问远程服务器及设备提供了安全、加密的方式,确保在可能不安全的网络上也能安全通信。
SSH(Secure Shell)如何在 22 端口上工作?
SSH 基于客户端-服务器模型工作,在网络连接中实现安全、加密的通信。它被广泛用于远程登录应用和终端等命令行工具中。Linux 用户更倾向于使用 SSH 端口进行远程访问和服务器管理。那么问题来了:SSH 是如何在 22 端口上工作的?

SSH 使用 22 端口在客户端与服务器之间建立安全、加密的通信通道。下面我们来详细了解 SSH 的工作原理!
SSH 端口转发完整指南
SSH 端口转发(也称为隧道)是一种通过加密 SSH 连接安全地重定向网络流量的方法。它在您的本地计算机与远程服务器之间建立一条受保护的通道,使您能够访问未直接暴露或受防火墙限制的服务。这种方法被广泛用于增强安全性,并在不受信任的网络上安全传输敏感数据。
什么是 SSH 端口转发(隧道)?
SSH 隧道的工作方式是封装来自某个端口的流量,并通过 SSH 会话将其转发到另一个端口。您的流量不会直接连接目标服务,而是经过 SSH 服务器,在那里被加密并安全地送达目的地。这样,原本不安全的协议也能以受保护的方式使用。
类型:本地、远程、动态
SSH 端口转发主要有三种类型:
本地转发(-L):将本地端口重定向到远程主机和端口。常用于访问远程服务器上运行的服务(例如数据库或内部 Web 应用),就像访问本地服务一样。
远程转发(-R):将远程服务器上的端口转发到您的本地计算机,使外部用户能够访问位于 NAT 或防火墙之后的本地服务。
动态转发(-D):创建一个 SOCKS 代理,通过单个 SSH 连接将流量灵活路由到多个目的地。



语法示例
ssh -L local_port:destination:remote_port user@server
ssh -R remote_port:localhost:local_port user@server
ssh -D port user@server
使用场景
SSH 端口转发常用于以下场景:
绕过防火墙和访问限制:通过 SSH 网关安全地访问内部或被屏蔽的服务。在使用离岸 VPS 方案时,这种方法尤其有效,因为此类方案网络限制更少,流量路由也更灵活。
安全访问数据库:连接绑定在 localhost 上的数据库,而无需将其暴露在公共互联网上。这在SEO VPS 主机 环境中尤为实用,因为此类环境对稳定性能和安全的数据处理要求很高。
VPN 替代方案:使用动态转发作为轻量级加密代理,实现安全浏览和流量路由。这种方法常用于加密货币 VPS 服务器,因为在这类场景中,安全且不间断的连接至关重要。
总体而言,SSH 端口转发是一种强大的安全通信工具,让您能够灵活掌控网络流量的路由与保护方式。
第 1 步:建立连接
第一步是在客户端与服务器之间发起连接请求。当用户或客户端希望与服务器建立 SSH 连接时,会先向服务器发送连接请求。
作为响应,服务器在 22 端口上配置并监听传入的 SSH 连接请求,然后确认并响应客户端发起的连接。
客户端与服务器会进行加密握手,双方交换信息以建立安全连接。为了保护后续通信,它们在此过程中协商选择加密方法并交换加密密钥。完成这一过程后,会生成一个共享密钥,供客户端(用户)和远程服务器双方共同使用。

第 2 步:用户身份验证
完成上述步骤后,客户端使用所选的认证方法向服务器证明自己的身份。SSH 用户认证的主要方式是密码和 SSH 密钥。
客户端将加密后的密码安全地传送给服务器。这可能包括提供加密密钥、输入密码,或使用 SSH 支持的其他任何认证方法。不过,密码的安全性取决于用户所设置的复杂程度,因此在某些情况下,密码被视为一种有风险的认证方式。
与使用非对称加密的 SSH 公钥-私钥对相比,密码通常被认为安全性较低。在密钥认证过程中,客户端使用相应的密钥成功解密服务器提供的消息后,服务器才会授予客户端系统访问权限。
认证完成后,客户端与服务器之间就建立了一条安全通道。由于双方交换的所有信息都经过加密,任何未经授权的第三方都无法窃听通信内容,从而保障了隐私。
第 3 步:建立安全通道并启动会话
安全通道建立后,SSH 会话随即启动。在此会话中,客户端可以与服务器安全交互,执行发送文件、运行命令以及其他经授权的操作。
会话期间客户端与服务器之间交换的所有命令、文件和数据都经过加密,并受到安全通道的保护。这种加密保证了数据的完整性,防止数据在传输过程中被篡改或操纵。
当用户结束 SSH 会话时,可以关闭连接。关闭安全通道后,在新会话启动之前将无法再进行任何通信。
SSH 在 22 端口上的运作包括:确保客户端与服务器之间的数据安全传输、验证客户端身份,以及建立安全的加密通信通道。由于采用了加密和安全的认证方法,SSH 在安全远程访问和通信领域受到广泛信赖与使用。
如何生成 SSH 密钥?
SSH 为用户提供了一种安全的方式,用于在远程服务器上执行命令、进行端口转发、建立隧道以及完成各种任务。它支持多种认证方法,其中最常见的是密码认证和基于公钥的认证。
与密码认证相比,基于公钥的认证依靠数字签名来增强安全性,通常被认为更安全、更便捷。
如果您使用基于 SSH 密钥的认证,可以按照以下步骤在 Linux 系统上生成 SSH 密钥:
第 1 步:检查已有的 SSH 密钥文件
首先在用于连接服务器的 Ubuntu 客户端计算机上创建 SSH 密钥。在生成 SSH 密钥之前,务必检查客户端系统上是否已存在 SSH 密钥对,以免新密钥对覆盖旧密钥对。您可以使用以下命令检查客户端计算机上是否存在 SSH 密钥文件:
$ ls -l ~/.ssh/id_*.pub
第 2 步:生成 SSH 密钥对
如果出现“No such file or directory”错误,说明您的计算机上没有 SSH 密钥,此时请继续下一步。在 Ubuntu 客户端计算机上执行以下命令,生成一个 4096 位的新密钥对,并以用户邮箱地址作为注释:
$ ssh-keygen
或
$ ssh-keygen -t rsa -b 4096 -C "useremail@yahoo.com"
执行上述“ssh-keygen”命令会创建一个默认的 3072 位 RSA 密钥对。若要将 SSH 密钥保存在“.ssh/”子目录下的默认位置,只需按“Enter”键。
随后,系统会提示您输入密码短语,以增加一层额外的安全保护。但请注意,每次登录远程计算机时都需要输入该密码短语。如果您希望保持默认设置、不设置密码短语,请直接按“Enter”。之后,终端上将显示完整的输出信息,如下所示:
使用以下命令验证客户端计算机上的 SSH 密钥对是否已成功生成:
$ ls ~/.ssh/id_*
终端上应显示已生成的 SSH 密钥对,这表示您已在 Ubuntu 客户端计算机上成功生成 SSH 密钥对。
第 3 步:连接到远程服务器
接下来,将生成的 SSH 公钥传输到您要管理的远程 Ubuntu 服务器。推荐使用“ssh-copy-id”工具将公钥复制到远程服务器。在客户端计算机上执行以下命令,即可轻松将公钥复制到远程 Ubuntu 服务器:
$ ssh-copy-id user_name@server_IPaddress
请将此处的服务器 IP 地址替换为您系统的 IP。
首次连接系统时,终端中可能会出现若干提示。输入“yes”并按“Enter”继续。服务器将检查并验证之前在客户端计算机上生成的 SSH 密钥。您也可以使用以下命令手动将生成的 SSH 公钥复制到服务器:
$ cat ~/.ssh/id_rsa.pub | ssh username@serverip "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
同样,请将用户名和服务器 IP 替换为您服务器的实际信息。
第 4 步:使用 SSH 密钥登录远程服务器
要通过 SSH 登录远程服务器,请使用以下命令:
ssh username@serverIP
如果您没有为私钥设置密码短语,即可立即登录远程服务器。反之,如果设置了密码短语,登录过程中会提示您输入。
第 5 步:禁用 SSH 密码认证
如果您希望禁用 SSH 密码认证以增加一层安全保护,请先使用具有 sudo 权限的账户登录远程服务器。使用以下命令打开 SSH 配置文件“/etc/ssh/sshd_config”:
$ sudo nano /etc/ssh/sshd_config
找到以下这一行,并将其参数设置为“no”。
PasswordAuthentication no
保存该配置文件并退出。
修改完成后,运行以下命令重启或重新加载服务器上的 SSH 服务:
$ sudo systemctl restart ssh
在结束当前会话之前,请确认服务器上的 SSH 工作正常。如果一切如预期运行,说明服务器上的 SSH 密码认证已被禁用。
在 Linux 系统上管理 SSH 的命令
安装 OpenSSH 服务器,请使用以下命令:
$ sudo apt install openssh-server
启动和停止 SSH 服务,请使用以下命令:
$ sudo systemctl start ssh
$ sudo systemctl stop ssh
检查 SSH 服务状态,确认其是否正在系统上运行,请使用:
$ sudo systemctl status ssh
启用 SSH 服务,请使用以下命令:
$ sudo systemctl enable ssh
重新加载或重启 SSH 服务,请运行以下命令:
$ sudo systemctl restart ssh
连接 SSH 服务器,请使用以下命令:
$ ssh username@remotehost or IP-address
如何通过 SSH 登录 Linux 服务器
通过 SSH 连接 Linux 服务器是系统管理员和开发人员的一项基本任务。SSH(Secure Shell)提供对服务器命令行的加密远程访问,让您能够通过网络安全地管理文件、运行命令和配置服务。
前提条件
连接之前,请确保您具备以下条件:
- 服务器的 IP 地址或主机名
- 有效的用户名(例如 root 或其他系统用户)
- SSH 端口(除非已更改,默认为 22)
- 认证方式:密码或 SSH 密钥
基本 SSH 命令
要发起连接,请在终端中使用以下命令:
ssh username@server_ip
如果服务器使用非标准端口,请使用 -p 选项指定端口:
ssh -p port username@server_ip
SSH 密钥认证(推荐)
为了提高安全性,建议使用基于 SSH 密钥的认证来代替密码。如果您已有私钥,可使用以下命令连接:
ssh -i /path/to/private_key username@server_ip
如果您还没有密钥对,可使用以下命令生成:
ssh-keygen -t rsa -b 4096
然后将公钥复制到服务器:
ssh-copy-id username@server_ip
首次连接与指纹验证
首次连接服务器时,SSH 会提示您验证服务器的指纹。确认这一步可以确保您连接的是正确的主机,而不是恶意的中间人。
常见问题
- Connection refused(连接被拒绝):SSH 服务可能未运行,或端口被阻止
- Permission denied(权限被拒绝):凭据不正确或 SSH 密钥配置错误
- 超时错误:网络问题或防火墙限制
总之,SSH 为远程管理 Linux 服务器提供了安全高效的方式,掌握其基本用法是任何服务器管理工作的必备技能。
了解 SSH 的工作原理之后,下一步就是拥有一台可以实际应用这些设置的服务器。BlueVPS 服务器能够为安全的远程访问和配置提供所需的灵活性。
如何在 UFW 防火墙中配置 SSH 22 端口?
请确保 Ubuntu 系统上的 UFW(Uncomplicated Firewall)已开启并处于活动状态。如果尚未启用,请使用以下命令启用 UFW:
$ sudo ufw enable
启用 UFW 后,使用以下命令在 UFW 防火墙中允许 22 端口上的 SSH 流量:
$ sudo ufw allow 22/tcp
如果您想在系统上停用 SSH 服务器,可以使用以下命令禁用或阻止 22 端口:
$ sudo ufw deny 22/tcp
要禁用 SSH 服务访问,请执行以下命令:
$ sudo systemctl stop ssh --now
$ sudo systemctl disable ssh --now
适用于 Linux 和 Windows 的 SSH 实现
各种 SSH 实现和客户端在不同的操作系统上得到广泛使用:
- OpenSSH(基于 Unix 的系统):OpenSSH 是 Linux、macOS 等基于 Unix 的系统的默认 SSH 实现。OpenSSH 以可靠性和安全性著称,在大多数基于 Unix 的平台上都已预装。
- PuTTY(Windows):PuTTY 是一款专为 Windows 设计的流行 SSH 客户端,提供友好的界面用于安全连接远程服务器。此外,PuTTY 还提供 PuTTYgen 等辅助工具,用于管理 SSH 密钥。
- PowerShell 中的 SSH(Windows):近年来,Microsoft 已将 OpenSSH 集成到 Windows PowerShell 中。这一集成简化了 Windows 用户使用 SSH 的方式,无需借助第三方应用程序。
SSH 默认端口号是多少?
如前所述,SSH 使用默认的 22 端口。每个 SSH 连接都通过 SSH 22 端口初始化。使用 22 端口作为默认端口可以简化用户的配置,并确保 SSH 连接采用标准化的方式。
但在某些情况下,使用默认端口传输关键数据被认为是不安全的。因此,出于安全考虑,建议将默认的 SSH 22 端口更改为其他端口号。
设备之间建立连接时共有 65,536 个通信端口可用。如果您想更改 SSH 端口号,可以从中选择一个。这是防止服务器遭受暴力破解攻击的明智做法。
如何将默认 SSH 22 端口更改为其他端口号?
如果您进行的是对安全性要求较高的重要通信,建议更改默认 SSH 端口号,以降低暴力破解攻击的风险。由于所有攻击者都知道 22 是默认 SSH 端口,它便成为攻击的首要目标,为黑客获取您传输的数据打开了大门。通过使用不同的 SSH 端口,您可以更有效地利用 SSH 协议来增强安全性。
请按照以下步骤将 SSH 22 端口更改为其他端口:

第 1 步:备份 sshd_config 文件
您可以通过编辑 sshd_config 文件中的端口号轻松更改默认 SSH 端口。不过,在修改配置文件之前,务必先对其进行备份。使用以下命令创建备份:
$ cp /etc/ssh/sshd_config /etc/ssh/sshd_backup_config
上述命令会在同一目录下创建该文件的副本。
第 2 步:更改 SSH 默认 22 端口
要更改 SSH 默认的 22 端口,请运行以下命令打开“ssh_config”文件:
$ sudo nano /etc/ssh/sshd_config
上述命令将在终端窗口中使用 nano 编辑器打开该配置文件。找到以下这行代码:
#Port 22
删除行首的“#”符号取消注释,并将端口更改为其他数字。例如,我们要将 SSH 端口号更改为 45571。
Port 45571
务必在防火墙中放行或添加该端口。
第 3 步:重启 SSH 服务
将端口添加到防火墙后,重启 SSH 服务以加载更改。
$ sudo service sshd restart
重启后,您所做的修改即会生效。请记住,购买 Linux VPS 后立即更改默认 SSH 端口号是一项关键的安全配置。您无需退出当前 SSH 会话即可方便地测试这些更改。
第 4 步:测试 SSH 端口
更改默认的 SSH 22 端口后,从客户端计算机连接服务器时需要指定端口号。
$ ssh username@userIP -p 45571
现在,您的默认 SSH 端口已更改为 45571。
结论
在本文中,我们了解了 SSH 如何在 22 端口上工作,以及如何将默认 SSH 端口更改为其他端口号。此外,我们还执行了多个 SSH 命令,帮助您理解 SSH 服务及其端口号。
希望您在阅读本教程后,能够将系统连接到 SSH 服务器,并轻松更改端口号,保护系统免受恶意用户的侵害。
SSH 端口常见问题
SSH 默认端口号是多少?
SSH 的默认端口号是 22。该端口被正式分配给 Secure Shell 连接,除非在配置中明确更改,大多数服务器都使用此端口。
22 端口有什么用途?
22 端口用于 SSH 访问,支持安全的远程登录、命令执行和文件传输,实现客户端与服务器之间的加密通信。
SSH 使用 TCP 还是 UDP?
SSH 使用 TCP(传输控制协议)。TCP 确保数据可靠、有序且安全地送达,这对远程管理至关重要。SSH 不使用 UDP。
如何更改 SSH 端口?
要更改 SSH 端口,您需要修改 SSH 服务器配置文件,指定新的端口号,然后重启 SSH 服务。之后,还应更新防火墙规则,允许通过新端口建立连接。
SSH 默认使用哪个端口?
默认情况下,SSH 使用 22 端口。如果出于安全或运维需要,可以更改这一标准配置。
可以在 443 端口上使用 SSH 吗?
可以,SSH 可以配置为在 443 端口上运行。由于 443 端口通常为 HTTPS 流量开放,这种做法有时被用来绕过网络限制。不过,这需要在服务器和防火墙两端都进行正确配置。