Linux如何开启SSH服务?

SSH(Secure Shell)是一种加密的网络协议,常用于远程登录和管理Linux服务器,确保数据传输的安全性,在Linux系统中,打开SSH服务通常包括安装SSH服务端、配置SSH参数、启动服务并设置开机自启等步骤,本文将以主流Linux发行版(如Ubuntu/Debian和CentOS/RHEL)为例,详细说明如何打开SSH服务。

linux 如何打开ssh

检查系统是否已安装SSH服务

在开始操作前,需先确认系统中是否已安装SSH服务端(通常是openssh-server),不同发行版的检查命令略有不同:

  • Ubuntu/Debian系统
    使用dpkg命令检查:

    dpkg -l | grep openssh-server

    如果输出包含openssh-server且状态为ii(表示已安装),则说明已安装;若未安装或状态异常,需执行后续安装步骤。

  • CentOS/RHEL系统
    使用rpm命令检查:

    rpm -qa | grep openssh-server

    若返回结果为空,则表示未安装,需进行安装。

安装SSH服务端

如果系统中未安装SSH服务端,需根据发行版选择对应的包管理器进行安装:

Ubuntu/Debian系统

使用apt包管理器安装,更新软件源后执行安装命令:

sudo apt update          # 更新软件源列表
sudo apt install openssh-server  # 安装SSH服务端

安装过程中会提示确认输入Y,完成后服务会自动启动(若未启动,需手动启动,见后续步骤)。

CentOS/RHEL系统

使用yumdnf包管理器安装(CentOS 7及以下使用yum,CentOS 8及以上使用dnf):

sudo yum install openssh-server  # CentOS 7及以下
# 或
sudo dnf install openssh-server  # CentOS 8及以上

安装完成后,同样可通过systemctl命令启动服务。

不同发行版安装命令对比

发行版 安装命令 包管理器
Ubuntu/Debian sudo apt install openssh-server apt
CentOS 7 sudo yum install openssh-server yum
CentOS 8+ sudo dnf install openssh-server dnf

配置SSH服务

安装完成后,需根据实际需求修改SSH配置文件(/etc/ssh/sshd_config),以调整安全策略、端口等参数,使用vimnano编辑器打开文件:

sudo vim /etc/ssh/sshd_config

以下是常用配置参数及说明:

linux 如何打开ssh

修改SSH端口(默认为22)

默认端口22易受攻击,建议修改为其他未被占用的端口(如2222):

Port 2222  # 取消注释并修改端口号

禁止root用户直接登录

提升安全性,禁止root通过SSH直接登录,需使用普通用户登录后切换至root:

PermitRootLogin no  # 禁止root登录(默认为yes,需修改为no)

配置密码认证或密钥认证

默认支持密码认证,建议同时启用密钥认证(更安全):

PasswordAuthentication yes  # 允许密码认证(默认为yes)
PubkeyAuthentication yes    # 允许密钥认证(默认为yes)

限制登录用户

仅允许特定用户通过SSH登录(如允许用户user1user2):

AllowUsers user1 user2

配置文件参数说明

参数 默认值 说明
Port 22 SSH监听端口,建议修改为非默认端口
PermitRootLogin yes 是否允许root用户登录,建议改为no
PasswordAuthentication yes 是否允许密码认证,密钥认证建议保持yes
PubkeyAuthentication yes 是否允许公钥认证,开启后可提升安全性
AllowUsers 限制允许登录的用户,多个用户用空格分隔

修改完成后,保存文件(vim中按Esc输入wq),并重启SSH服务使配置生效:

sudo systemctl restart sshd  # 重启SSH服务
sudo systemctl reload sshd   # 或重载配置(不中断连接)

启动SSH服务并设置开机自启

启动SSH服务

使用systemctl命令启动SSH服务:

sudo systemctl start sshd  # 启动SSH服务(CentOS/RHEL)
# 或
sudo systemctl start ssh   # Ubuntu/Debian中服务名为ssh

设置开机自启

确保SSH服务在系统重启后自动启动:

sudo systemctl enable sshd  # CentOS/RHEL
# 或
sudo systemctl enable ssh   # Ubuntu/Debian

查看服务状态

检查SSH服务是否正常运行:

sudo systemctl status sshd  # CentOS/RHEL
# 或
sudo systemctl status ssh   # Ubuntu/Debian

若输出显示active (running),则表示服务已正常运行。

配置防火墙放行SSH端口

Linux系统默认启用防火墙(如ufwfirewalld),需放行SSH端口(默认22或自定义端口)以允许远程连接:

Ubuntu/Debian(使用ufw

sudo ufw allow 22       # 放行默认22端口
# 或放行自定义端口(如2222)
sudo ufw allow 2222/tcp # 指定协议为tcp
sudo ufw enable        # 启用防火墙(若未启用)

CentOS/RHEL(使用firewalld

sudo firewall-cmd --permanent --add-port=22/tcp  # 永久放行22端口
# 或放行自定义端口(如2222)
sudo firewall-cmd --permanent --add-port=2222/tcp
sudo firewall-cmd --reload  # 重载防火墙使配置生效

防火墙放行命令对比

发行版 防火墙工具 放行默认端口命令 放行自定义端口(如2222)
Ubuntu/Debian ufw sudo ufw allow 22 sudo ufw allow 2222/tcp
CentOS/RHEL firewalld sudo firewall-cmd --permanent --add-port=22/tcp sudo firewall-cmd --permanent --add-port=2222/tcp

测试SSH连接

配置完成后,可通过另一台设备(如Windows/Linux/macOS)使用SSH客户端连接服务器。

基本连接命令

ssh username@服务器IP地址 -p 端口号
  • username:服务器上的用户名(如user1);
  • 服务器IP地址:服务器的公网IP(如168.1.100);
  • -p 端口号:若使用默认22端口,可省略;若修改过端口(如2222),需指定。

示例:

linux 如何打开ssh

ssh user1@192.168.1.100 -p 2222

首次连接提示

首次连接时,会提示服务器密钥指纹未知,输入yes确认连接:

The authenticity of host '192.168.1.100 (192.168.1.100)' can't be established.
ECDSA key fingerprint SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes

连接成功后,输入用户密码即可登录服务器。

密钥认证连接(可选)

为提升安全性,可配置SSH密钥认证(免密登录):

  • 生成密钥对(在客户端执行):

    ssh-keygen -t rsa -b 4096  # 生成RSA 4096位密钥对

    一路回车使用默认路径(~/.ssh/id_rsa~/.ssh/id_rsa.pub)。

  • 上传公钥到服务器

    ssh-copy-id user1@192.168.1.100 -p 2222  # 将公钥上传到服务器

    输入用户密码后,公钥会保存到服务器的~/.ssh/authorized_keys文件中。

  • 免密登录测试

    ssh user1@192.168.1.100 -p 2222  # 无需密码直接登录

常见问题排查

若SSH连接失败,可从以下方面排查:

  1. 检查SSH服务状态:确认服务是否运行(systemctl status sshd);
  2. 检查防火墙设置:确保防火墙已放行SSH端口;
  3. 检查端口占用:使用netstat -tuln | grep 端口号确认端口是否被占用;
  4. 检查配置文件语法:使用sshd -t测试配置文件是否有误;
  5. 查看日志:通过/var/log/auth.log(Ubuntu)或/var/log/secure(CentOS)查看连接失败原因。

相关问答FAQs

Q1:SSH连接时提示“Connection refused”怎么办?
A:“Connection refused”通常表示SSH服务未启动或端口未开放,可按以下步骤排查:

  1. 检查SSH服务状态:sudo systemctl status sshd,若未运行则执行sudo systemctl start sshd
  2. 检查端口是否正确:确认/etc/ssh/sshd_config中的Port设置与连接命令中的端口一致;
  3. 检查防火墙:确保防火墙已放行对应端口(如ufw allow 22firewall-cmd --add-port=22/tcp);
  4. 检查端口占用:使用netstat -tuln | grep 22确认端口是否被其他服务占用。

Q2:如何禁止root用户通过SSH登录?
A:禁止root登录可提升服务器安全性,操作步骤如下:

  1. 编辑SSH配置文件:sudo vim /etc/ssh/sshd_config
  2. 找到PermitRootLogin参数,将其值修改为no(默认为yes);
  3. 保存文件并重启SSH服务:sudo systemctl restart sshd
  4. 测试:使用root用户尝试SSH连接,若提示“Permission denied”则表示配置成功,此后需通过普通用户登录后切换至root(su -sudo -i)。

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

(0)
酷番叔酷番叔
上一篇 2小时前
下一篇 1小时前

相关推荐

  • 绕过证书验证安全吗?生产环境需有效证书

    在虚拟化技术领域,VMware ESXi 作为企业级 hypervisor 被广泛部署,虽然 ESXi 本身是一个独立的操作系统,但Linux 系统可通过标准化接口和工具实现对 ESXi 主机的集中管理、自动化运维和监控,以下是 Linux 管理 ESXi 的核心方法与实践:官方命令行工具:govcVMware……

    2025年7月28日
    2400
  • pxelinux.0如何实现网络启动?

    pxelinux.0 是 Syslinux 项目中的核心网络引导文件,用于 PXE(预启动执行环境)启动流程,它存储在 TFTP 服务器上,当客户端通过网卡启动时,会从服务器加载该文件,进而读取配置文件(如 pxelinux.cfg/default)决定启动选项(如加载 Linux 内核、Live CD 镜像等……

    2025年6月17日
    4400
  • Linux头文件需要单独编译吗?

    头文件的作用与编译原理头文件的功能头文件包含函数声明、宏定义、结构体等共享内容,通过#include指令被源文件(.c/.cpp)引用,确保代码可重用性和一致性,编译过程当编译源文件时:预处理器:将#include “header.h”替换为头文件的实际内容,编译器:将预处理后的代码编译为目标文件(.o),链接……

    2025年7月10日
    3400
  • Linux各版本发行情况如何?

    Linux作为开源操作系统的核心,其发行版生态呈现出多元化、场景化的发展态势,自1991年Linus Torvalds发布内核以来,全球开发者社区基于内核构建了数百种发行版,覆盖从服务器、桌面到嵌入式设备等全场景需求,这些发行版因软件包管理、桌面环境、目标用户的不同,形成了各具特色的分支,持续推动着开源技术的普……

    2025年8月26日
    1800
  • Linux系统如何查看当前swap的详细大小信息?

    在Linux系统中,Swap(交换空间)是物理内存的补充,当物理内存不足时,系统会将部分不常用的数据临时写入Swap分区或文件,以释放内存供其他程序使用,合理配置Swap空间对系统稳定性至关重要,而过大的Swap可能导致性能下降,过小则可能引发内存不足问题,掌握查看Swap大小及使用情况的方法是Linux系统管……

    2025年8月23日
    1800

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信