概述
SSH(Secure Shell)是管理远程 Linux 服务器必不可少的标准网络协议。本文将在 Ubuntu 环境下,从搭建 OpenSSH 服务器开始,逐步介绍无密码公钥认证、生产网络连接所需的 SSH 端口转发,以及必不可少的安全加固实用技巧。
1. 安装 OpenSSH 服务器并启用服务
为了在 Ubuntu 系统中提供远程连接服务,首先更新最新的软件包列表,并安装 openssh-server 软件包。

运行 systemctl enable --now ssh 命令,将安装的 SSH 服务设置为开机自启并立即启动运行。

检查 SSH 服务守护进程(sshd)当前是否处于活动运行状态(active (running))。

运行 ss -tulpn | grep :22 命令,确认 SSH 是否在默认的 22 端口处于监听(LISTEN)状态以等待网络连接。

2. 生成并配置用于免密登录的 SSH 密钥对
创建用于安全存放 SSH 密钥文件的 ~/.ssh 目录,并将其权限设置为 700,以便仅允许所有者访问。

若不存在高安全性和高性能的 Ed25519 算法密钥对,则运行 test -f ~/.ssh/id_ed25519 || ssh-keygen -t ed25519 -N '' -f ~/.ssh/id_ed25519 命令生成新密钥对。
命令执行后,可以确认私钥(id_ed25519)与公钥(id_ed25519.pub)已成功生成。

将生成的公钥内容追加注册到认证许可文件 ~/.ssh/authorized_keys 中。

为了保持认证密钥文件的安全性并顺利通过 SSH 守护进程严格的权限检查,将 authorized_keys 文件的权限限制为 600。

指定生成的 Ed25519 私钥,尝试连接到本地回环(127.0.0.1)地址,验证基于密钥的认证是否正常工作。
命令执行后,输出无需输入密码即可通过本地密钥认证成功连接的提示信息。

3. 实战网络隧道:SSH 端口转发实践
为了运行 Web 服务器并进行 HTTP 请求测试,更新最新的软件包列表并安装 curl 与 python3 软件包。

运行 mkdir -p /tmp/webroot && echo '<h1>SSH Tunnel Test OK</h1>' > /tmp/webroot/index.html 命令,创建端口转发测试所用的 Web 目录并编写测试用 HTML 文件。

运行 python3 -m http.server 8080 --directory /tmp/webroot >/dev/null 2>&1 & 命令,在后台的 8080 端口启动一个简易 Web 服务器作为内部服务。

在后台运行本地端口转发,将发往本地 9090 端口的请求通过 SSH 安全隧道转发到目标服务器的 8080 端口。
命令执行后,不会占用终端会话,而是在后台安全建立端口转发隧道。

向通过 SSH 隧道转发的本地 9090 端口发送 HTTP 请求,验证到内部 Web 服务器的连接是否成功中继。
命令执行后,返回了内部 8080 端口 Web 服务器的响应内容 <h1>SSH Tunnel Test OK</h1>,证明端口转发运行正常。

完成端口转发测试后,运行 pkill -f 'http.server 8080' 命令安全终止在后台运行的测试用 Web 服务器进程。

4. 生产环境 SSH 服务器安全加固配置 (sshd_config)
为防范配置修改过程中可能发生的意外并保留原始配置,使用 sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak 命令备份配置文件。

为了加强安全性并彻底禁止 root 账户的直接远程登录,运行 sudo sed -i 's/^#*PermitRootLogin.*/PermitRootLogin no/' /etc/ssh/sshd_config 命令修改配置项。

为了提前验证修改后的 SSH 服务器配置文件是否存在语法错误或拼写失误,安全起见运行 sudo sshd -t 命令进行检测。
执行命令后未输出任何错误信息,确认配置语法正确无误。

运行 grep -E '^(PermitRootLogin|PasswordAuthentication)' /etc/ssh/sshd_config || echo '설정 검증 완료' 命令,检查禁止 root 登录选项(PermitRootLogin no)是否已正确生效。
命令执行结果成功检索到 PermitRootLogin no,确认安全配置已完整应用。

以上就是在 Ubuntu 环境下从 SSH 基础连接到端口转发、必要安全设置等生产实务所需的关键内容总结。
建议逐步应用上述安全规范,构建更加安全高效的服务器运维管理环境。