OpenSSH 是安全远程通信的重要工具,提供了一种安全的方式来访问和管理服务器。对于那些计划在 Ubuntu 22.04 Jammy Jellyfish 或其较旧的稳定版本的 Ubuntu 20.04 Focal Fossa 上安装 SSH 并启用它的人来说,了解其功能和优势至关重要。
OpenSSH的主要特点:
安全通信:通过强大的加密功能,OpenSSH 确保主机之间传输的数据是安全的,并防止未经授权的访问。远程服务器管理:OpenSSH 允许用户远程有效地管理服务器,从而简化启动和停止服务、修改配置和故障排除等任务。多面性:使用 OpenSSH,用户可以访问远程计算机、安全地传输文件以及出于各种目的的隧道流量。它的灵活性使定制能够满足特定需求。开源:作为一个免费的开源应用程序,OpenSSH可供所有人访问,为昂贵的商业选择提供了可靠的替代方案。凭借这些功能,OpenSSH 是用于远程服务器访问和管理的可靠且安全的工具,使其成为 Ubuntu 用户的首选。以下指南将引导您在 Ubuntu 22.04 Jammy Jellyfish 或 Ubuntu 20.04 Focal Fossa 上安装和启用 SSH,并附有增强安全性的配置提示。
在 Ubuntu 上安装 SSH 22.04 或 20.04 通过 APT
在安装 SSH 之前更新 Ubuntu
首先,使用以下命令更新软件包列表并升级现有软件包,以避免系统上出现任何冲突。
sudo apt update && sudo apt upgrade
接下来,通过运行以下命令安装 OpenSSH:
sudo apt install openssh-server
要检查 Ubuntu 系统上安装的 OpenSSH 服务器的版本,您可以在终端中使用以下命令:
ssh -V
在 Ubuntu 22.04/20.04 上配置 SSH
安装 OpenSSH 后,对其进行配置以满足您的需求。默认配置适合大多数用户,但如有必要,请编辑 /etc/ssh/sshd_config 文件以调整设置。
尽管 OpenSSH 默认使用安全加密和身份验证,但请考虑采取其他步骤来进一步增强安全性。
更改 Ubuntu 上的 OpenSSH 端口
更改默认的 OpenSSH 端口是防止未经授权访问您的 Ubuntu 计算机的有效方法。限制登录尝试次数和禁用 root 登录可以进一步增强安全性。
要更改默认的 OpenSSH 端口,请编辑 /etc/ssh/sshd_config 配置文件。请使用文本编辑器打开文件:
sudo vim /etc/ssh/sshd_config
在配置文件中,找到“端口”选项,并将端口号修改为所需的端口号。例如,若要将端口更改为 2222,请添加以下行:
Port 2222
保存文件并退出编辑器。若要应用更改,请使用以下命令重新启动 OpenSSH 服务:
sudo systemctl restart sshd
在 Ubuntu 上使用 SSH 限制登录尝试
接下来,您可以限制 OpenSSH 允许的登录尝试次数。这有助于防止暴力攻击。为此,请再次编辑 /etc/ssh/sshd_config 文件:
sudo vim /etc/ssh/sshd_config
找到 MaxAuthTries 选项,并将该值修改为所需的数字。例如,若要将允许的最大登录尝试次数设置为 3,请添加以下行:
MaxAuthTries 3
保存文件并退出编辑器。若要应用更改,请使用以下命令重新启动 OpenSSH 服务:
sudo systemctl restart sshd
在 Ubuntu 上禁用 SSH Root 登录
以下推荐的安全配置是禁用 OpenSSH 的 root 登录。这有助于防止攻击者获得对 Ubuntu 计算机的 root 访问权限。再次编辑 /etc/ssh/sshd_config 文件:
sudo vim /etc/ssh/sshd_config
找到 PermitRootLogin 选项,并将值更改为 no。例如:
PermitRootLogin no
保存文件并退出编辑器。若要应用更改,请使用以下命令重新启动 OpenSSH 服务:
这些配置更改将有助于保护您的 Ubuntu 计算机并防止未经授权的访问。
在 Ubuntu 上使用 UFW 规则锁定 SSH
Ubuntu 防火墙 (UFW) 是一个前端工具,可简化 Ubuntu 计算机防火墙的管理。UFW 通过将传入连接限制为仅到必要的端口和 IP 地址,从而进一步加强 OpenSSH 安全性。尽管 Ubuntu 通常默认包含 UFW(简单防火墙),但如果系统上还没有它,您可能需要安装它。您可以使用下面提供的命令执行此操作:
sudo apt install ufw
安装后,可以通过运行以下命令,使用 UFW 允许 OpenSSH 端口(默认为 22)上的传入连接:
sudo ufw allow ssh
如果更改了默认的 OpenSSH 端口,则必须改为允许新端口上的传入连接。例如,如果将端口更改为 2222,请改用以下命令:
sudo ufw allow 2222/tcp
然后,您可以使用以下命令检查 UFW 状态:
默认情况下,UFW 应拒绝所有其他传入连接。但是,您可以通过指定允许访问 Ubuntu 计算机的 IP 地址或 IP 地址范围来限制与 OpenSSH 的传入连接。
例如,如果只想允许来自特定 IP 地址的传入连接,请使用以下命令:
sudo ufw allow from 203.0.113.0 to any port 22
将 203.0.113.0 替换为要允许的 IP 地址。
在 Ubuntu 22.04/20.04 上通过 SSH 连接到远程服务器
在 Ubuntu 上通过 SSH 建立连接
以下是有关如何使用不同的身份验证方法和端口进行连接的步骤。
ssh username@remote_server
将“username”替换为您帐户的用户名,将“remote_server”替换为所需服务器的主机名或 IP 地址。当您启动命令时,系统将提示您输入密码以进行身份验证并成功建立连接。
使用公钥身份验证进行连接
为了提高安全性,SSH 支持使用公钥身份验证进行连接。这种方法避免了传统的密码输入,需要私钥来验证您的身份。要使用公钥身份验证,请执行:
ssh -i /path/to/private_key username@remote_server
在此命令结构中,应替换为私钥文件的实际路径,而 和 需要分别替换为您的用户名和远程服务器的 IP 地址或主机名。/path/to/private_key
username
remote_server
指定连接端口
SSH 传统上使用端口 22 进行连接,但某些服务器可能使用不同的端口。要通过备用端口进行连接,请输入:
ssh -p PORT_NUMBER username@remote_server
确保替换为远程服务器侦听传入 SSH 连接的实际端口号。PORT_NUMBER
scp /path/to/local/file username@remote_server:/path/to/remote/directory
此命令需要修改,以反映本地系统和远程服务器上的实际文件和目录路径,以及正确的 username
和 remote_server
其他常用 SSH 命令
对于日常操作,您可能会发现以下 SSH 命令很方便:
要将目录及其内容复制到远程服务器,请执行以下操作:
scp -r /path/to/local/directory username@remote_server:/path/to/remote/directory
在远程服务器上运行命令:
ssh username@remote_server 'command_to_run'
对 Ubuntu 22.04/20.04 上的 SSH 故障排查
如果您在 Ubuntu 计算机上遇到任何 OpenSSH 问题,以下是一些标准的故障排除步骤:
通过运行以下命令,检查 OpenSSH 日志中是否有任何错误消息:
sudo tail -f /var/log/auth.log
通过运行以下命令检查 OpenSSH 服务的状态:
sudo systemctl status sshd
查看时,请检查常见错误,例如不正确的防火墙配置阻止传入的 OpenSSH 端口连接。此外,请确保 OpenSSH 服务用户对服务具有正确的权限和访问权限。
Systemd 命令输出演示了 OpenSSH 在 Ubuntu 22.04 或 20.04 上的活动和运行状态
结论
本指南全面概述了 Ubuntu 上的 OpenSSH 安装和配置。它讨论了使用 OpenSSH 进行安全通信的重要性、检查 OpenSSH 安装、概述安装和配置过程、解释如何保护 OpenSSH 以及解决常见问题。请遵循本指南,使用 Ubuntu 桌面或服务器进行有效且安全的 OpenSSH 管理。