当前位置: 首页 > news >正文

linux配置ssh,亲测简单可用

⚠️ 重要警告与准备

  1. 你将失去远程连接:在卸载 SSH 服务后,当前的所有 SSH 连接会保持,但新的连接将无法建立。如果你正在通过 SSH 远程操作服务器,这一步会非常危险。
  2. 必须通过本地控制台操作:这个操作必须在服务器的物理控制台、虚拟化管理控制台(如 VMware vSphere, Proxmox VE)或云服务商的网页终端(如 AWS EC2 Instance Connect, Azure Serial Console, 阿里云/腾讯云的 VNC)上进行。不要在唯一的 SSH 会话中执行卸载步骤。
  3. 备份配置文件(非常重要):在卸载前,备份你当前的 SSH 配置,以便重装后可以恢复。
  4. 知道root密码:确保你知道 root 用户或具有 sudo 权限的用户的密码,因为重装后可能需要通过本地控制台登录。

第一步:备份当前配置(关键步骤)

在开始任何操作之前,先备份你的 SSH 配置文件和主机密钥。

# 创建一个备份目录
sudo mkdir /root/ssh_backup# 备份主要的配置文件 sshd_config
sudo cp /etc/ssh/sshd_config /root/ssh_backup/# 备份整个 /etc/ssh/ 目录(包含重要的主机密钥)
sudo cp -r /etc/ssh /root/ssh_backup/ssh_full_backup# 备份已授权的密钥文件(如果需要)
sudo cp -r ~/.ssh /root/ssh_backup/ 2>/dev/null || true
sudo cp -r /home/*/.ssh /root/ssh_backup/ 2>/dev/null || true# 将备份包压缩并放到安全的地方(可选)
sudo tar -czvf /root/ssh_backup.tar.gz /root/ssh_backup

第二步:卸载 OpenSSH 服务器

使用你的 Linux 发行版的包管理器来卸载。

对于 Ubuntu / Debian 系统:
# 停止 SSH 服务
sudo systemctl stop ssh# 卸载 openssh-server 包
sudo apt purge openssh-server -y# 移除不需要的依赖包
sudo apt autoremove -y
对于 CentOS / RHEL / Fedora 系统:
# 停止 SSH 服务
sudo systemctl stop sshd# 卸载 openssh-server 包
sudo yum remove openssh-server -y
# 或者使用 dnf (较新版本的 Fedora/RHEL)
# sudo dnf remove openssh-server -y

此时,SSH 服务已被移除,新的远程连接已无法建立。


第三步:重新安装 OpenSSH 服务器

现在通过本地控制台登录系统,执行安装命令。

对于 Ubuntu / Debian 系统:
# 更新软件包列表
sudo apt update# 安装 openssh-server
sudo apt install openssh-server -y
对于 CentOS / RHEL / Fedora 系统:
# 安装 openssh-server
sudo yum install openssh-server -y
# 或者使用 dnf
# sudo dnf install openssh-server -y

第四步:恢复配置并启动服务

安装完成后,恢复你之前备份的配置。

# 1. 恢复主配置文件(如果你有自定义配置)
# 注意:直接覆盖前,先确认新安装的默认配置是否与你备份的配置兼容。
sudo cp /root/ssh_backup/sshd_config /etc/ssh/sshd_config# 或者更安全的方法是:手动将你需要的自定义配置从备份文件合并到新的 /etc/ssh/sshd_config 中。
# 使用 vim 或 nano 编辑新文件,加入你需要的设置(如端口、PermitRootLogin等)。
# sudo vim /etc/ssh/sshd_config# 2. 如果你希望恢复主机密钥(以避免客户端出现“主机密钥更改”的警告),可以恢复整个目录。
# 注意:这会使之前连接过的客户端无法识别,需要删除客户端的 known_hosts 中的旧记录。
# sudo cp -r /root/ssh_backup/ssh_full_backup/* /etc/ssh/# 3. 启动 SSH 服务并设置开机自启
sudo systemctl start ssh    # Ubuntu/Debian
# sudo systemctl start sshd  # CentOS/RHELsudo systemctl enable ssh   # Ubuntu/Debian
# sudo systemctl enable sshd # CentOS/RHEL# 4. 检查服务状态,确认它正在运行
sudo systemctl status ssh   # Ubuntu/Debian
# sudo systemctl status sshd # CentOS/RHEL

第五步:配置防火墙(如果需要)

如果系统防火墙是开启的,你需要放行 SSH 端口(默认为 22)。

对于 UFW (Ubuntu/Debian):
sudo ufw allow ssh
# 或者指定端口,例如如果你修改了默认端口为 2222
# sudo ufw allow 2222/tcp
对于 firewalld (CentOS/RHEL/Fedora):
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --reload
对于 iptables:
# 放行 22 端口
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# 然后保存 iptables 规则(方法因发行版而异)

第六步:测试连接

从另一台机器尝试 SSH 连接到该服务器,验证安装是否成功。

ssh username@your_server_ip

如果连接失败,请检查:

  1. 服务状态:systemctl status ssh
  2. 监听端口:sudo ss -tlnp | grep :22
  3. 配置文件语法:sudo sshd -t(此命令会检查 sshd_config 文件的语法是否正确,不会重启服务)

总结:最安全的操作流程

  1. 通过本地控制台登录(物理控制台、VNC、云终端)。
  2. 备份:备份整个 /etc/ssh/ 目录和 sshd_config
  3. 安装新版本:直接安装 openssh-server,包管理器会处理一切。
    sudo apt update && sudo apt install openssh-server -y # Debian/Ubuntu
    
  4. 手动合并配置:不要直接覆盖新的 sshd_config,而是用编辑器打开新文件,将备份文件中你修改过的特定配置项(如 Port, PermitRootLogin, PasswordAuthentication 等)手动添加回去。
  5. 重启服务sudo systemctl restart ssh
  6. 测试:开一个新的 SSH 会话测试连接,确保成功后再关闭当前的本地控制台会话。

按照这个流程,你可以安全地重新安装 SSH 服务器而不会把自己锁在门外。

http://www.dtcms.com/a/391879.html

相关文章:

  • SNMP 模块化设计解析
  • 2025的Xmind自定义安装(实测版)
  • AI“闻香识酒”:电子鼻+机器学习开启气味数字化新纪元
  • Coze工作流拆解:成语故事类小红书图文批量创作全流程
  • PyQt6之进度条
  • 【AI编程】Trae配置rules与配置和使用一些目前比较好用的MCP
  • 音乐家不会被束缚,MusicGPT+cpolar让创作更自由
  • python笔记之面向对象篇(六)
  • Linux中处理nohup日志太大的问题
  • vLLM应该怎么学习
  • 实测AI Ping,一个大模型服务选型的实用工具——技术原理与核心技巧解析
  • rag-anything —— 一站式 RAG 系统
  • 第十周文件包含漏洞和远程命令执⾏漏洞
  • 2021年下半年 系统架构设计师 综合知识
  • 佳易王宠物医院管理系统软件:核心功能详解
  • Berkeley DB: 一款高性能的嵌入式键值对数据库
  • BGE-large-zh-v1.5微调
  • Merkle Patricia Tree
  • 2003-2017年各地级市环境相关指标数据
  • 【开题答辩全过程】以 基于JAVA的视频分享管理系统为例,包含答辩的问题和答案
  • claude-code-和-codex-和-cursor-uniapp前端开发实测
  • 阿里新发布|Qwen3-Next-80B-A3B :MoE 架构破解大模型效率难题,vLLM 落地实测
  • 1型糖尿病中的胰岛细胞病变(β细胞与α细胞)
  • 工频干扰消除算法总结参考
  • 6.栈和队列(上)
  • C语言 ——— 数组
  • 卡尔曼Kalman滤波|基础学习(二)
  • 《2511系统分析师第二遍阅读总结2》
  • FramePack
  • 自注意力机制Self-Attention (三)