ubuntu安装ssh完整指南

为什么需要在Ubuntu上安装SSH

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

ubuntu安装ssh完整指南
ubuntu安装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配置是提高效率的重要一步。

发表评论