SSH

SSH端口指南:安全的远程服务器访问

了解 SSH 如何使用端口 22、何时公开它、如何测试远程访问以及如何降低暴力破解和凭证风险。

默认端口
22
协议
TCP
主要用途
安全远程管理

SSH 端口是什么?

SSH(即 Secure Shell)是用于远程服务器管理的标准加密协议。默认情况下,它侦听 TCP 端口 22,客户端在该端口进行身份验证、验证服务器主机密钥并打开安全 shell 会话、隧道或自动化连接。

  • 端口 22 是默认的 SSH 端口

    除非另有配置,否则大多数 Linux 服务器、网络设备、Git 服务、部署工具和 SFTP 设置都希望可以通过 TCP 22 访问 SSH。

  • SSH 暴露必须是故意的

    开放的 SSH 端口对于管理很有用,但它也是攻击者为了寻找弱密码或泄露密钥而首先扫描的服务之一。

SSH 的工作原理

SSH 在客户端和远程服务器之间创建加密通道。在连接设置期间,客户端验证服务器主机密钥,双方协商加密,用户使用密码、SSH 密钥、证书、硬件支持的密钥或其他配置的方法进行身份验证。

经过身份验证后,SSH 可以提供交互式 shell、执行单个远程命令、转发端口、复制文件或 Git、rsync、Ansible 等强大工具和部署管道。这种灵活性就是 SSH 在操作上如此重要以及暴露需要谨慎政策的原因。

何时应打开 SSH 访问

当管理员、自动化工具、CI/CD 作业、配置管理、Git 服务或打破玻璃工作流程需要远程访问服务器或设备时,打开 SSH。对于公共云服务器,SSH 通常是安装更高级别工具之前使用的第一个管理路径。

如果只有一小部分人需要访问,请不要将 SSH 发布到整个互联网。如果可能,首选 VPN、堡垒主机、零信任访问、云串行控制台、源 IP 允许列表或专用网络连接。如果公共 SSH 不可避免,请从一开始就强制执行强身份验证和监控。

打开端口 22 之前

在打开端口 22 之前,请确认 sshd 正在运行、正在侦听目标接口,并且已配置为您实际想要的身份验证模型。决定是否允许使用密码、哪些用户可以登录、是否禁用 root 登录以及如何审核管理操作。

端口检查器可以确认 TCP 22 是否可以从网络外部访问,但它不能证明用户可以安全登录。使用 ssh -vvv、服务器日志和帐户级测试来验证主机密钥信任、密钥权限、MFA 策略、shell 访问和 sudo 规则。

如何在 Windows、Linux 和 macOS 上打开 SSH

在 Windows Server 上,安装并启用 OpenSSH Server,启动 sshd 服务,并在 Windows Defender 防火墙中允许入站 TCP 22。云托管的Windows服务器还需要匹配的云防火墙或安全组规则。

在 Linux 上,安装 OpenSSH 服务器,检查 sshd_config,并允许 TCP 22 通过主机防火墙,例如 ufw、firewalld、nftables 或 iptables。云实例还要求提供商安全组允许相同的源网络。

在 macOS 上,当可信网络上需要 SSH 时启用远程登录。对于互联网暴露,应用与服务器相同的控制:基于密钥的身份验证、防火墙范围、日志记录和及时更新。

  • 服务层:sshd 必须安装、运行并侦听所选的 TCP 端口。
  • 网络层:主机防火墙、云防火墙、路由器NAT、VPN策略都必须允许目标源网络。
  • 身份层:更喜欢 SSH 密钥、证书或硬件支持的密钥;避免广泛的密码访问。
  • 审计层:捕获成功登录、失败尝试、源 IP、用户更改、sudo 事件和密钥轮换。

如何测试 SSH 连接

首先根据公共主机名或 IP 地址和端口 22 进行外部端口检查。如果结果打开,则可以访问 SSH 的 TCP 路径。然后运行 ​​ssh user@example.com 或 ssh -vvv user@example.com 来验证主机密钥、身份验证方法和会话设置。

在服务器上,使用 ss -tlnp、netstat 或 PowerShell 确认侦听器。如果涉及云服务器,请将主机防火墙规则与云安全组进行比较,因为即使另一层看起来正确,任何一层都可以阻止 SSH。

测试 SSH 端口 22

SSH常见故障处理案例

如果端口 22 被关闭,sshd 可能会被停止、安装在不同的端口上、仅绑定到专用接口或被主机防火墙阻止。如果检查超时,数据包可能会被云安全组、路由器 NAT 规则、ISP 过滤器、VPN 策略或源 IP 白名单丢弃。

如果端口打开但登录失败,请检查用户名、密钥权限、authorized_keys 文件、密码策略、MFA 要求、AllowUsers 或 DenyUsers 规则、root 登录设置和服务器日志。许多 SSH 失败是授权问题而不是端口问题。

SSH 安全检查表

禁用 root 登录、优先使用密钥或证书而不是密码、轮换密钥、删除过时的帐户以及限制可以连接的人员。使用 MFA 或硬件支持的密钥进行特权访问,并确保私钥受到密码或安全硬件存储的保护。

通过源白名单、堡垒主机、VPN、速率限制、入侵检测和及时的 OpenSSH 补丁来减少攻击面。将 SSH 移至非标准端口可以减少噪音扫描,但应仅将其视为噪音减少,而不是安全控制。

常见问题

SSH 使用什么端口?

SSH 默认使用 TCP 端口 22。如果服务器以这种方式配置并且客户端指定自定义端口,它可以在另一个端口上运行。

打开端口 22 安全吗?

当访问是有意且强化的时,它就可以是安全的。使用密钥或证书、禁用 root 登录、限制源网络、监控失败的尝试以及对 SSH 服务器进行修补。

为什么22端口开放但SSH登录失败?

当身份验证失败时,TCP 端口可以访问。检查用户名、密钥权限、授权密钥、MFA、允许的用户规则、shell 设置和 SSH 服务器日志。

我应该将 SSH 更改为其他端口吗?

更改端口可以减少自动扫描噪音,但它不能取代强身份验证、访问控制、日志记录和修补。