Ubuntu SSH安装教程:远程连接服务器指南 – wiki基地


Ubuntu SSH安装教程:远程连接服务器指南

SSH(Secure Shell)是一种加密的网络协议,用于在不安全的网络上安全地执行网络服务。它提供了强大的身份验证和加密机制,确保了数据传输的机密性和完整性。对于管理远程Ubuntu服务器而言,SSH是不可或缺的工具。

本文将详细介绍如何在Ubuntu服务器上安装和配置OpenSSH服务,并从客户端进行安全连接。

目录

  1. 什么是SSH?为什么使用它?
  2. 环境准备
  3. 步骤一:更新系统软件包
  4. 步骤二:安装OpenSSH Server
  5. 步骤三:配置防火墙 (UFW)
  6. 步骤四:验证SSH服务状态
  7. 步骤五:从客户端连接到服务器
    • Linux/macOS
    • Windows (使用PuTTY或WSL)
  8. 步骤六 (推荐):配置SSH密钥认证
    • 生成SSH密钥对
    • 将公钥复制到服务器
    • 禁用密码认证 (提高安全性)
  9. 步骤七 (可选):更改SSH默认端口
  10. 总结

1. 什么是SSH?为什么使用它?

SSH是一种允许用户安全地访问和管理远程计算机的协议。它通过加密技术,在客户端和服务器之间创建一个安全的通道,所有传输的数据(包括密码和命令)都将经过加密,从而防止窃听和篡改。

为什么使用SSH?

  • 安全性高:数据传输加密,防止敏感信息泄露。
  • 远程管理:可以在任何有网络连接的地方管理你的服务器。
  • 文件传输:除了命令行访问,SSH还支持安全的文件传输(如SCP和SFTP)。
  • 端口转发:允许通过加密通道转发其他网络服务。

2. 环境准备

在开始之前,请确保你具备以下条件:

  • 一台运行Ubuntu Server的远程服务器(或虚拟机),并且你拥有其root或具有sudo权限的用户账户。
  • 服务器需要有互联网连接,以便下载软件包。
  • 一台用于连接服务器的本地计算机(客户端)。

3. 步骤一:更新系统软件包

在安装任何新软件之前,始终建议更新你的服务器。这可以确保你安装的是最新版本的软件包,并修复潜在的安全漏洞。

在你的Ubuntu服务器上打开终端,运行以下命令:

bash
sudo apt update
sudo apt upgrade -y

sudo apt update 会更新可用软件包的列表,而 sudo apt upgrade -y 会将所有已安装的软件包升级到最新版本,-y 选项会自动确认所有提示。

4. 步骤二:安装OpenSSH Server

Ubuntu通常默认没有安装OpenSSH Server,但客户端工具(ssh 命令)通常是预装的。要允许远程连接到你的Ubuntu服务器,你需要安装 openssh-server 包。

在服务器上运行以下命令:

bash
sudo apt install openssh-server -y

安装完成后,SSH服务通常会自动启动。

5. 步骤三:配置防火墙 (UFW)

为了服务器的安全,强烈建议启用并配置防火墙。Ubuntu默认使用UFW (Uncomplicated Firewall)。你需要允许SSH连接通过防火墙。

首先,检查UFW的状态:

bash
sudo ufw status

如果UFW是 inactive(未激活),你需要先启用它。在启用之前,务必允许SSH,否则你可能会将自己锁在服务器外面。

允许SSH连接:

SSH默认使用TCP端口22。

bash
sudo ufw allow OpenSSH

或者,更具体地允许端口22:

bash
sudo ufw allow 22/tcp

启用UFW (如果未启用):

bash
sudo ufw enable

系统会提示你这可能会中断现有的SSH连接,输入 y 并回车确认。

再次检查UFW状态:

bash
sudo ufw status

你应该看到 Status: active 并且 OpenSSH (或 22/tcp) 被列为 ALLOW

“`
Status: active

To Action From
— —— —-
OpenSSH ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
“`

6. 步骤四:验证SSH服务状态

确认OpenSSH服务正在运行。

bash
sudo systemctl status ssh

如果服务正在运行,你将看到类似以下输出:

● ssh.service - OpenBSD Secure Shell server
Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2025-12-31 10:00:00 UTC; 5min ago
Docs: man:sshd(8)
man:ssh(1)
Main PID: 1234 (sshd)
Tasks: 1 (limit: 4679)
Memory: 5.6M
CPU: 42ms
CGroup: /system.slice/ssh.service
└─1234 /usr/sbin/sshd -D

如果服务没有运行,你可以手动启动它:

bash
sudo systemctl start ssh

如果希望SSH在系统启动时自动运行,确保它已启用:

bash
sudo systemctl enable ssh

7. 步骤五:从客户端连接到服务器

现在OpenSSH Server已在你的Ubuntu服务器上运行,你可以从本地计算机连接到它。你需要知道服务器的IP地址或主机名。

你可以通过在服务器上运行以下命令获取IP地址:

bash
ip a | grep -Eo 'inet (addr:)?([0-9]*\.){3}[0-9]*' | grep -Eo '([0-9]*\.){3}[0-9]*' | grep -v '127.0.0.1' | head -n 1

假设服务器IP地址为 your_server_ip,你的用户名是 your_username

从 Linux / macOS 客户端连接

打开终端,使用 ssh 命令:

bash
ssh your_username@your_server_ip

例如:

bash
ssh [email protected]

  • 第一次连接时,系统会提示你确认服务器的真实性,输入 yes 并回车。服务器的指纹将被添加到你的 ~/.ssh/known_hosts 文件中。
  • 然后输入你的用户密码。
  • 成功登录后,你将看到服务器的命令行提示符。

从 Windows 客户端连接

方法一:使用PuTTY

  1. 下载并安装PuTTY:https://www.putty.org/
  2. 打开PuTTY。
  3. 在 “Host Name (or IP address)” 字段中输入 your_server_ip
  4. 确保 “Port” 是 22
  5. 在 “Connection type” 中选择 SSH
  6. 你可以给这个会话一个名字并点击 “Save” 以便下次快速加载。
  7. 点击 “Open”。
  8. 如果第一次连接,会出现安全警告,点击 “Accept”。
  9. 在弹出的终端窗口中,输入你的 your_username,然后输入密码。

方法二:使用Windows Subsystem for Linux (WSL)

如果你已安装WSL,可以直接在WSL终端中使用与Linux/macOS相同的方法连接:

  1. 打开WSL终端。
  2. 运行 ssh your_username@your_server_ip 命令。
  3. 输入密码。

8. 步骤六 (推荐):配置SSH密钥认证

使用SSH密钥对进行认证比密码认证更安全、更便捷,因为它消除了暴力破解密码的风险。

8.1 生成SSH密钥对 (在本地客户端执行)

在你的本地计算机(Linux/macOS终端或Windows WSL终端)上,运行以下命令生成密钥对:

bash
ssh-keygen -t rsa -b 4096

  • -t rsa 指定密钥类型为RSA。
  • -b 4096 指定密钥长度为4096位(更安全)。
  • 系统会提示你保存密钥的路径(默认通常是 ~/.ssh/id_rsa),可以直接按回车接受默认值。
  • 系统会提示你输入一个密码(passphrase)。这是一个额外的安全层,即使私钥被盗,没有密码也无法使用。强烈建议设置一个。

这会在 ~/.ssh/ 目录下生成两个文件:
* id_rsa:你的私钥 (绝对不能分享给任何人!)
* id_rsa.pub:你的公钥

8.2 将公钥复制到服务器 (在本地客户端执行)

使用 ssh-copy-id 命令将你的公钥复制到服务器:

bash
ssh-copy-id your_username@your_server_ip

  • 系统会要求你输入 your_username 的密码。
  • ssh-copy-id 会自动将你的公钥添加到服务器上 ~/.ssh/authorized_keys 文件中。

如果 ssh-copy-id 不可用或你使用的是Windows上的PuTTY,你需要手动复制公钥内容:

  1. 在本地打开 id_rsa.pub 文件,复制其所有内容。
    • Linux/macOS: cat ~/.ssh/id_rsa.pub
  2. 通过密码连接到服务器。
  3. 在服务器上创建或编辑 ~/.ssh/authorized_keys 文件。确保 ~/.ssh 目录及其内容只有所有者有读写权限。
    bash
    mkdir -p ~/.ssh
    chmod 700 ~/.ssh
    nano ~/.ssh/authorized_keys
  4. 将你的公钥内容粘贴到 authorized_keys 文件中,并保存。
  5. 设置 authorized_keys 文件的权限:
    bash
    chmod 600 ~/.ssh/authorized_keys

现在,尝试使用SSH密钥登录,无需密码:

bash
ssh your_username@your_server_ip

如果设置了密钥密码,会提示你输入该密码。

8.3 禁用密码认证 (提高安全性)

一旦你确认SSH密钥认证可以正常工作,为了进一步提高服务器安全性,你可以禁用密码认证。

在服务器上,编辑SSH配置文件:

bash
sudo nano /etc/ssh/sshd_config

找到以下行并进行修改(如果被注释,请取消注释并修改):

“`

PermitRootLogin prohibit-password # 推荐禁用root直接登录

PasswordAuthentication no
“`

注意PermitRootLogin 建议设置为 prohibit-password (允许密钥认证但禁止密码) 或 no (完全禁止root登录)。如果你需要root权限,可以通过普通用户登录后使用 sudo -isudo su

保存并关闭文件 (Ctrl+O, Enter, Ctrl+X)。

重启SSH服务以应用更改:

bash
sudo systemctl restart ssh

现在,任何尝试通过密码登录服务器的请求都将被拒绝,只能通过SSH密钥进行认证。

9. 步骤七 (可选):更改SSH默认端口

将SSH服务从默认的22端口更改为其他端口,可以减少来自自动化扫描和攻击的尝试(但这并不能阻止有针对性的攻击)。

在服务器上,编辑SSH配置文件:

bash
sudo nano /etc/ssh/sshd_config

找到 Port 22 这一行,并将其更改为其他未使用的端口号(例如,2222):

Port 2222

保存并关闭文件。

重要:更新防火墙规则!

如果你更改了SSH端口,必须在UFW中允许新端口,并删除旧端口的规则。

“`bash
sudo ufw allow 2222/tcp # 允许新端口
sudo ufw delete allow OpenSSH # 删除旧的OpenSSH规则(如果之前用了这个)

或者如果你之前明确允许了端口22:

sudo ufw delete allow 22/tcp # 删除旧的22端口规则

“`

重启SSH服务:

bash
sudo systemctl restart ssh

从客户端连接时,你需要指定新端口:

bash
ssh -p 2222 your_username@your_server_ip

10. 总结

通过本教程,你已经成功在Ubuntu服务器上安装并配置了OpenSSH服务,并学习了如何从客户端进行连接。为了确保服务器的安全,强烈建议启用防火墙、使用SSH密钥认证,并考虑禁用密码认证和更改默认SSH端口。

现在,你可以安全高效地远程管理你的Ubuntu服务器了!


滚动至顶部