Linux系统如何搭建SSH远程连接服务?

在Linux系统中搭建SSH(Secure Shell)服务是实现远程安全管理的核心操作,SSH通过加密传输和身份验证机制,确保用户在远程登录、文件传输等操作中的数据安全,本文将以主流Linux发行版(如Ubuntu/Debian和CentOS/RHEL)为例,详细讲解SSH服务的完整搭建流程,包括安装配置、启动、防火墙设置及客户端连接测试,并附上安全加固建议。

linux系统如何搭建ssh

SSH服务安装

不同Linux发行版的软件包管理工具不同,需根据系统选择对应的安装命令,以下是常见发行版的安装步骤:

Ubuntu/Debian系统

Ubuntu/Debian系列使用apt包管理器,执行以下命令安装SSH服务(默认为OpenSSH):

sudo apt update  # 更新软件包列表
sudo apt install openssh-server  # 安装OpenSSH服务器

安装完成后,可通过systemctl status ssh查看服务状态(若未启动,需手动执行sudo systemctl start ssh)。

CentOS/RHEL系统

CentOS/RHEL系列使用yumdnf包管理器(CentOS 7及以后版本推荐dnf):

sudo yum install openssh-server  # CentOS 7及以前版本
# 或
sudo dnf install openssh-server  # CentOS 8及以后版本

安装后同样可通过systemctl status sshd查看服务状态(CentOS系列服务名为sshd)。

不同发行版安装命令对比

发行版系列 包管理器 安装命令 服务名称
Ubuntu/Debian apt sudo apt install openssh-server ssh
CentOS/RHEL yum/dnf sudo yum/dnf install openssh-server sshd

SSH服务配置

SSH服务的核心配置文件为/etc/ssh/sshd_config(Ubuntu/Debian)或/etc/ssh/sshd_config(CentOS/RHEL),通过修改该文件可实现端口自定义、登录限制等功能,配置前建议备份原文件:

linux系统如何搭建ssh

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

关键配置项说明

配置项 默认值 说明 推荐设置
Port 22 SSH服务监听端口 修改为非默认端口(如2222)
PermitRootLogin yes 是否允许root用户直接登录 no(禁止root直接登录,提升安全性)
PasswordAuthentication yes 是否允许密码认证 no(仅密钥认证,更安全)
PubkeyAuthentication yes 是否允许公钥认证 yes(结合密码认证或单独使用)
AllowUsers 允许登录的用户列表(多个用户用空格分隔) AllowUsers user1 user2
MaxAuthTries 6 最大认证尝试次数 3(防止暴力破解)

配置示例

使用vimnano编辑配置文件:

sudo vim /etc/ssh/sshd_config
Port 2222          # 修改端口
PermitRootLogin no  # 禁止root直接登录
PasswordAuthentication no  # 禁止密码认证,仅用密钥
AllowUsers admin test  # 仅允许admin和test用户登录
MaxAuthTries 3      # 最大认证尝试3次

保存后执行sudo systemctl restart ssh(Ubuntu)或sudo systemctl restart sshd(CentOS)使配置生效。

防火墙设置

SSH服务默认端口(22)或自定义端口需通过防火墙开放,否则客户端无法连接,不同发行版防火墙工具不同:

Ubuntu/Debian(UFW防火墙)

sudo ufw allow 2222/tcp  # 开放自定义端口2222
sudo ufw enable          # 启用防火墙(若未启用)

CentOS/RHEL(Firewalld防火墙)

sudo firewall-cmd --permanent --add-port=2222/tcp  # 永久开放端口2222
sudo firewall-cmd --reload                         # 重新加载防火墙规则

防火墙命令对比

发行版系列 防火墙工具 开放端口命令 启用防火墙命令
Ubuntu/Debian UFW sudo ufw allow 端口/tcp sudo ufw enable
CentOS/RHEL Firewalld sudo firewall-cmd --permanent --add-port=端口/tcp sudo systemctl start firewalld

SSH客户端连接测试

基本连接

使用ssh命令连接服务器,格式为ssh -p 端口 用户名@服务器IP

ssh -p 2222 admin@192.168.1.100

首次连接会提示“Are you sure you want to continue connecting? (yes/no)”,输入yes即可。

密钥认证配置(推荐)

为提升安全性,建议使用SSH密钥对替代密码认证:

linux系统如何搭建ssh

  • 生成密钥对(在客户端执行):
    ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

    按提示保存密钥(默认~/.ssh/id_rsa),无需设置密码或直接设置密码保护私钥。

  • 上传公钥到服务器
    ssh-copy-id -p 2222 admin@192.168.1.100

    执行后输入服务器用户密码,公钥将自动添加到服务器的~/.ssh/authorized_keys文件中。

  • 测试免密登录
    ssh -p 2222 admin@192.168.1.100

    若无需输入密码即可登录,说明密钥认证配置成功。

安全加固建议

  1. 修改默认端口:避免使用默认端口22,降低自动化攻击风险。
  2. 禁用root直接登录:通过普通用户登录后切换至root(sudo su -),减少权限泄露风险。
  3. 使用密钥认证:关闭密码认证(PasswordAuthentication no),强制使用密钥对。
  4. 限制登录用户:通过AllowUsersDenyUsers配置项,仅允许特定用户登录。
  5. 定期更新SSH软件包:执行sudo apt upgrade(Ubuntu)或sudo yum update(CentOS),修复安全漏洞。
  6. 配置失败登录限制:通过MaxAuthTries限制认证次数,或使用fail2ban工具封禁恶意IP。

相关问答FAQs

Q1: SSH连接时提示“Connection timed out”怎么办?
A: 可能原因及解决方法:
(1)SSH服务未启动:执行sudo systemctl start ssh(Ubuntu)或sudo systemctl start sshd(CentOS);
(2)防火墙拦截:检查防火墙规则,确保SSH端口已开放(如sudo ufw statussudo firewall-cmd --list-ports);
(3)服务器IP或端口错误:确认客户端输入的IP地址和端口与服务器配置一致;
(4)网络问题:使用ping命令测试服务器网络连通性(如ping 192.168.1.100)。

Q2: 如何修改SSH默认端口并确保连接正常?
A: 修改步骤如下:
(1)编辑SSH配置文件:sudo vim /etc/ssh/sshd_config,将Port 22改为自定义端口(如Port 2222);
(2)开放防火墙端口:Ubuntu执行sudo ufw allow 2222/tcp,CentOS执行sudo firewall-cmd --permanent --add-port=2222/tcp && sudo firewall-cmd --reload
(3)重启SSH服务:sudo systemctl restart ssh(Ubuntu)或sudo systemctl restart sshd(CentOS);
(4)客户端连接测试:使用ssh -p 2222 username@IP连接,若成功则说明修改成功。

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/31126.html

(0)
酷番叔酷番叔
上一篇 2025年9月27日 05:26
下一篇 2025年9月27日 06:07

相关推荐

  • Linux中如何正确设置PATH环境变量?

    在Linux系统中,PATH环境变量是一个非常重要的配置,它定义了系统在执行命令时会搜索可执行文件的路径列表,当用户在终端输入一个命令时,系统会按照PATH中指定的路径顺序依次查找对应的可执行文件,如果找到则执行,否则提示“命令未找到”,正确设置PATH可以让用户更方便地运行自定义的可执行程序或第三方工具,而无……

    2025年9月22日
    2100
  • Linux系统中如何实现返回上一步操作?

    在Linux系统中,“返回上一步”是一个常见的操作需求,但其具体实现方式取决于操作场景,例如命令行目录切换、文本编辑、文件操作或命令执行等,不同场景下,Linux提供了多种命令和工具来实现“返回”功能,本文将详细讲解这些方法及其使用场景,命令行目录操作中的“返回上一步”在Linux命令行中,用户经常需要在目录间……

    2025年9月10日
    2300
  • linux下如何安装stax

    在Linux系统中安装stax(假设stax是一个用于特定任务处理的工具或框架,具体功能需结合实际场景,此处以通用安装流程为例)需要根据系统环境选择合适的方式,主要包括通过包管理器安装、源码编译安装两种主流方法,以下是详细步骤说明,安装前环境准备在开始安装前,需确保系统满足基本要求:建议Linux内核版本3.1……

    2025年10月8日
    1000
  • 解决Linux无法上网问题

    在 Linux 系统中连接互联网是基础操作,但不同发行版和硬件环境可能带来差异,本文提供图形界面与命令行两种方法,涵盖常见问题解决方案,适用于 Ubuntu、CentOS、Debian 等主流发行版,连接前的准备工作检查硬件状态有线网络:确保网线插入网口,指示灯正常闪烁,无线网络:确认 Wi-Fi 开关已开启……

    2025年6月30日
    4600
  • 如何正确配置Linux PATH环境变量?

    在Linux系统中,PATH环境变量定义了终端查找可执行文件的目录列表,当需要移除无效、重复或存在安全风险的路径时(例如清理残留软件路径或修复命令冲突),可通过以下方法操作:查看当前 PATH在操作前先确认现有路径:echo $PATH“`—### **二、临时删除(仅当前终端会话有效)**1. **直接……

    2025年7月20日
    3800

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信