为什么需要在Ubuntu上安装SSH
SSH(Secure Shell)是Linux系统中用于远程管理和安全传输文件的标准协议。对于Ubuntu用户而言,无论是管理服务器、远程连接开发环境,还是通过SFTP传输文件,SSH都是不可或缺的基础服务。默认情况下,Ubuntu桌面版不会安装SSH服务端,而服务器版则通常会在安装过程中询问是否启用。本文将以Ubuntu 22.04 LTS和24.04 LTS为例,详细介绍安装SSH服务的完整流程、配置要点以及常见问题的解决方法。

安装前的准备工作
检查系统状态
在开始安装之前,建议先确认系统版本和网络连接是否正常。打开终端,执行以下命令检查系统信息:
lsb_release -a
同时,确保系统软件包索引是最新的:
sudo apt update
如果系统提示有可升级的软件包,可以执行sudo apt upgrade进行升级,但这不是强制要求。
确认是否已安装SSH
部分Ubuntu变体可能预装了OpenSSH客户端,但服务端并不总是存在。可以通过以下命令检查:
dpkg -l | grep openssh-server
如果没有任何输出,说明系统尚未安装SSH服务端。另外,检查SSH服务是否在运行:
systemctl status ssh
如果服务不存在或未运行,输出会明确提示。
安装OpenSSH服务端
使用apt安装
Ubuntu官方软件仓库中提供了OpenSSH服务端软件包,安装过程非常简单。在终端中执行:
sudo apt install openssh-server
系统会列出需要安装的依赖包并询问是否继续,输入Y并回车确认。安装完成后,SSH服务会自动启动。可以通过以下命令验证服务状态:
sudo systemctl status ssh
如果看到active (running)字样,说明服务已正常运行。如果没有自动启动,可以手动启动:
sudo systemctl start ssh
设置开机自启
为了让SSH服务在系统重启后自动运行,需要启用其开机自启功能:
sudo systemctl enable ssh
这条命令会在系统启动时自动加载SSH服务,避免每次重启后手动启动的麻烦。
配置SSH服务
修改配置文件
SSH服务的主配置文件位于/etc/ssh/sshd_config。在修改前,建议先备份原文件:
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
使用文本编辑器打开配置文件:
sudo nano /etc/ssh/sshd_config
以下是一些常见的配置项及其说明:
- Port 22:SSH默认监听端口,出于安全考虑可以改为其他端口(如2222)。修改后需要重启服务。
- PermitRootLogin prohibit-password:禁止root用户直接使用密码登录,推荐使用密钥认证。如果不需要root登录,可以设置为
no。 - PubkeyAuthentication yes:启用公钥认证,这是推荐的安全做法。
- PasswordAuthentication yes:是否允许密码登录。如果配置了密钥认证,可以关闭此选项以增强安全性。
修改完成后,保存文件并重启SSH服务使配置生效:
sudo systemctl restart ssh
防火墙设置
如果Ubuntu启用了UFW防火墙(默认情况下桌面版未启用,服务器版可能启用),需要放行SSH端口。以默认的22端口为例:
sudo ufw allow ssh
如果修改了SSH端口,则需要放行对应端口,例如:
sudo ufw allow 2222/tcp
查看防火墙当前状态:
sudo ufw status
测试SSH连接
本机测试
在Ubuntu本机终端中,可以使用SSH客户端连接到本机以验证服务是否正常:
ssh localhost
首次连接会提示确认主机指纹,输入yes后继续。如果配置了密码认证,会要求输入当前用户的密码。连接成功后,终端提示符会变为远程会话状态。
局域网内远程连接
从另一台电脑(可以是Windows、macOS或其他Linux)连接Ubuntu主机,需要知道Ubuntu的IP地址。在Ubuntu上查看IP:
ip addr show
找到inet字段中的地址,通常类似192.168.x.x。然后在其他电脑上执行:
ssh 用户名@IP地址
例如:ssh john@192.168.1.100。如果连接失败,请检查防火墙设置和网络连通性。
配置SSH密钥认证(推荐)
密码登录虽然方便,但存在暴力破解的风险。使用密钥认证可以显著提高安全性。
生成密钥对
在客户端计算机上(不是Ubuntu服务器),生成SSH密钥对:
ssh-keygen -t rsa -b 4096
按提示选择保存路径(默认~/.ssh/id_rsa)并设置密码短语(可选)。生成的公钥文件为id_rsa.pub。
将公钥复制到服务器
使用ssh-copy-id命令将公钥安装到Ubuntu服务器:
ssh-copy-id 用户名@IP地址
输入用户密码后,公钥会被追加到服务器的~/.ssh/authorized_keys文件中。之后就可以通过密钥方式登录:
ssh 用户名@IP地址
如果设置了密码短语,每次连接需要输入该短语,但不会要求输入账户密码。
禁用密码登录(可选)
确认密钥认证正常后,可以修改sshd_config文件,将PasswordAuthentication设置为no,然后重启SSH服务。这样只有持有私钥的用户才能登录,大大降低被暴力破解的风险。
常见问题与解决方法
连接被拒绝
如果客户端提示Connection refused,可能原因包括:
- SSH服务未启动:执行
sudo systemctl start ssh。 - 端口被防火墙阻止:检查UFW规则。
- SSH监听端口与连接端口不一致:检查配置文件中的Port设置。
连接超时
连接超时通常与网络有关,可以尝试:
- 确认目标IP地址是否正确。
- 从服务器本机
ssh localhost测试,排除服务端问题。 - 检查路由器或交换机是否阻断了SSH端口。
权限问题导致无法登录
如果使用密钥认证但登录失败,检查服务器上~/.ssh目录和authorized_keys文件的权限。正确的权限应为:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
同时确保authorized_keys文件的所有者是当前用户。
卸载SSH服务
如果不再需要SSH服务,可以彻底卸载:
sudo systemctl stop ssh
sudo apt remove --purge openssh-server
第一条命令停止服务,第二条命令卸载软件包并删除配置文件。如果之后需要重新安装,只需再次执行sudo apt install openssh-server即可。
总结
安装SSH服务是Ubuntu系统管理中的基础操作,整个过程只需几分钟。通过本文的步骤,你可以完成OpenSSH的安装、基本配置、密钥认证设置以及常见问题的排查。建议在实际使用中优先采用密钥认证方式,并定期更新系统软件包以获取安全修复。对于远程管理多台Linux机器的工作场景,掌握SSH配置是提高效率的重要一步。