OpenSSH 服务管理
文章目录OpenSSH 服务管理OpenSSH 服务介绍SSH 协议概述SSH 建立连接的过程加密类型双向加密过程使用 ssh 访问远端CLIssh 工具演示ssh工具配置文件SSH 密钥认证配置配置过程排故SSH 服务安全加固配置文件基础说明加固配置项1. 禁止 root 密码登录2. 禁止 root 登录3. 禁止密码登录4. 只允许特定用户登录OpenSSH 服务管理OpenSSH 服务介绍SSH 协议概述SSHSecure Shell是一种工作在应用层的安全远程协议专为远程登录、文件传输等网络服务提供加密保护。传统的 Telnet、FTP、rlogin 等工具均以明文传输数据存在极高的信息泄露风险OpenSSH 作为其主流实现通过对传输数据全程加密替代了这些不安全的传统服务成为当前远程管理服务器的标准工具。SSH 建立连接的过程SSH 连接的建立分为 5 个核心阶段协议版本协商阶段目前主流使用 SSH2 版本相比 SSH1 修复了大量安全漏洞。加密算法协商阶段客户端与服务器根据双方支持的加密、哈希算法进行协商确定本次会话使用的算法组合。双向身份认证阶段服务器和客户端分别向对方验证身份是 SSH 安全的核心环节。会话请求阶段客户端向服务器发送会话请求如数据压缩、伪终端申请、端口转发、认证代理等。交互会话阶段会话建立完成后双方可进行 Shell 命令交互、文件传输等数据通信。加密类型对称加密加密和解密都使用一个钥匙。确保数据的完整性、速度快。非对称加密一对钥匙。公钥用来加密数据。私钥用来解密数据。确保数据的安全性。SSH 协议结合了对称加密与非对称加密的优势两者特性对比见下表对比项对称加密非对称加密核心原理加密和解密使用同一个密钥采用一对公钥 / 私钥公钥加密、私钥解密典型场景会话数据加密SSH 会话建立后使用密钥交换、身份认证如 TLS 握手、公钥登录优点加密效率高、计算速度快适合大量数据传输无需提前分发密钥安全性强支持身份验证缺点密钥分发困难一旦泄露则数据完全暴露计算效率较低密钥长度更长占用更多资源用例数据加密传输、PII 数据脱敏身份认证、密钥交换、数字签名双向加密过程SSH协议是基于非对称加密方法的服务器和客户端都会生成自己的公钥和私钥。公钥用来加密数据。私钥用来解密数据。双向加密过程服务器创建密钥对。远程服务器会在/etc/ssh目录下生成一个名为多个密钥对例如ecdsa类型的密钥对ssh_host_ecdsa_key.pub 公钥和 ssh_host_ecdsa_key 私钥。之后每回启动sshd服务的时候系统会自动在此路径下查找公钥。客户端请求连接。服务器接到请求后把公钥传给客户端使用。客户端记录服务器公钥并计算自己的公私钥。客户端将服务器传来的公钥记录在**~/.ssh/known_hosts** 中若是已经记录有该服务器公钥则比对是否一致一致后就计算客户端自己的公私钥。bash [laomaclient ~ 10:16:36]$ ssh server The authenticity of host ‘server (10.1.8.10)’ can’t be established. ECDSA key fingerprint is SHA256:KTP3/4VydNwCIpOUzpd0C5IhvjfirHy1U8IHIt8ZdM. ECDSA key fingerprint is MD5:33:24:9b:48:f7:d2:c5:73:3e:40:d0:38:0e:a7:da:7c. Are you sure you want to continue connecting (yes/no)?# 作用 # 1. 接收server提供的公钥使用这个公钥加密数据发送给对方。 # 2. 校验对方的公钥是否正确。如果本地以及提前存储过对方的公钥了 客户端使用服务器的公钥加密自己的公钥并发送给服务器。服务器端拥有客户端公钥自己私钥客户端拥有服务器公钥自己私钥组成了非对称加密系统。双向加解密。服务器发送数据用客户端公钥加密客户端收到数据后用自己私钥解密。客户端发送数据用服务器公钥加密服务器收到数据后用自己私钥解密。使用 ssh 访问远端CLIssh 工具演示方式一只指定IP或主机名# 通过IP地址[myzclient ~10:38:08]$ssh10.1.8.10 myz10.1.8.10s password: Last login: Thu Jul 23 10:34:15 2026 from client.myz.cloud [myzserver ~ 10:38:35]$ # 通过主机名称 [myzclient ~ 10:17:19]$ ssh server The authenticity of host server(10.1.8.10) cant be established. ECDSA key fingerprint is SHA256:TBjfYNKltjlgh78oZe2XmxAhxd0PGRA8axQzqSRawM. ECDSA key fingerprint is MD5:0a:95:db:0d:da:7f:a4:a4:89:23:a8:60:e9:74:e5:ae. Are you sure you want tocontinueconnecting(yes/no)?yesWarning: Permanently addedserver,10.1.8.10(ECDSA)to the list of known hosts. myzservers password: Last failed login: Thu Jul2310:17:37 CST2026from client.myz.cloud on ssh:notty There was1failed login attempt since the last successful login. Last login: Thu Jul2310:16:332026from10.1.8.1方式二额外指定用户名# 指定root用户登录[myzclient ~10:34:51]$sshrootserver rootservers password: Last login: Thu Jul 23 10:34:40 2026 from client.myz.cloud # 或者 [myzclient ~ 10:34:18]$ ssh -l root server rootservers password: Last failed login: Thu Jul2310:34:38 CST2026from client.myz.cloud on ssh:notty There was1failed login attempt since the last successful login. Last login: Wed Jul2215:53:422026方式三额外指定命令# 同时指定用户和命令[myzserver ~10:38:50]$sshmyzserverhostnameThe authenticity ofhostserver (10.1.8.10)cant be established. ECDSA key fingerprint is SHA256:TBjfYNKltjlgh78oZe2XmxAhxd0PGRA8axQzqSRawM. ECDSA key fingerprint is MD5:0a:95:db:0d:da:7f:a4:a4:89:23:a8:60:e9:74:e5:ae. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added server,10.1.8.10 (ECDSA) to the list of known hosts. myzservers password: server.myz.cloud# shell提示符仍然是本机。[myzserver ~10:39:17]$[myzclient ~10:35:07]$sshrootserverhostname;idrootservers password: server.myz.clouduid0(root)gid0(root)groups0(root)contextunconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023ssh工具配置文件参考SSH_CONFIG(5)。[rootclient ~]# man ssh_config~/.ssh/config用户自己的配置优先级高于全局配置。文件权限不得高于644。/etc/ssh/ssh_config全局配置应用于所有用户。示例[myzclient ~]$mkdir.ssh[myzclient ~10:53:24]$chmod700.ssh[myzclient ~10:53:37]$vim~/.ssh/config Host * StrictHostKeyChecking no User root PreferredAuthentications password[myzclient ~10:54:37]$chmod600.ssh/config# 清空其他主机秘钥[myzclient ~10:54:48]$.ssh/known_hosts# 再次登录不会提示主机key是否校验验证用户也是root[myzclient ~]$sshserver Warning: Permanently addedserver,10.1.8.10(ECDSA)to the list of known hosts. rootservers password:参数说明Host*匹配所有目标服务器。StrictHostKeyChecking no连接目标服务器不校验主机key直接接受。User root连接目标服务器默认使用laoma账户。PreferredAuthentications password连接目标服务器使用密码认证。IdentityFile指定私钥位置。配置文件权限建议设置为只能用户自己读写。[myzclient ~]$sshserver Bad owner or permissions on /home/myz/.ssh/config[myzclient ~11:34:21]$chmod600.ssh/config[myzclient ~11:34:30]$sshserver rootservers password:SSH 密钥认证配置使用密钥登录避免输入密码更安全。配置过程# 客户端生成密钥对[myzclient ~11:15:29]$ ssh-keygen Generating public/private rsa key pair.# 私钥保存位置Enterfileinwhichto save the key(/home/laoma/.ssh/id_rsa):回车# 私钥加密密码回车表示不加密Enter passphrase(emptyforno passphrase):回车# 再次回车Enter same passphrase again:回车Your identification has been savedin/home/myz/.ssh/id_rsa. Your public key has been savedin/home/myz/.ssh/id_rsa.pub. The key fingerprint is: SHA256:MtOAidL9RsXIP8zp2kWCgkuwTc6rJ3pPMiEFoQFDuI myzclient.myz.cloud The keys randomart image is: ---[RSA 2048]---- |o. . o. | |Bo.o oo.. | |oEo. o . | |.o* .o.oB . | |...o .*.S | |.oo . . . | |o . o . | |oo o . . | | | ----[SHA256]----- # 查看生成的文件 [myzclient ~ 11:16:21]$ ls .ssh config id_rsa id_rsa.pub known_hosts # 将公钥推动给目标服务器上的目标用户 [myzclient ~ 11:16:33]$ ssh-copy-id myzserver /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: /home/myz/.ssh/id_rsa.pub /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys myzservers password: Number of key(s)added:1Now try logging into the machine, with:ssh myzserverand check tomakesure that only the key(s)you wanted were added.# 验证[myzclient ~11:22:09]$sshmyzserverhostnameserver.myz.cloud# 推送公钥相当于# 将公钥内容保存到目标服务器上目标用户家目录下.ssh/authorized_keys中[myzclient ~11:22:24]$cat.ssh/id_rsa.pub ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCy9QFLLojvQ1gqAZOcjJDW3E9dXLVu09vwUYE7YqHjuB3RbStganGnUMKoj34FfFCtpDJjcILgTwIhvaqMIlUkD2Vh8B3134phxOO/Ycix4nCqlbZIFzmy6KX7OAfVQ4tTlxy8NdItOQX5jqtNkCJ050PiAmo/3Gd4Gdl5ajRRdzkpWz0oo7Kvce3m8tWSvgeQEoCUxUD/lx3X48veyP0wjzLcFIzWR7JxnGV/SKQjWsN7Z/xP7qFWB/aO0H4iscLENSBOkaJ2hOBemNF4I5fO49TE9lDPVLnD/bgio0/lddEP725hzZpB7jwrjRTrzfZ42IhDaELWcUJt9 myzclient.myz.cloud# 在server端查看[myzserver ~11:27:52]$cat.ssh/authorized_keys ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCy9QFLLojvQ1gqAZOcjJDW3E9dXLVu09vwUYE7YqHjuB3RbStganGnUMKoj34FfFCtpDJjcILgTwIhvaqMIlUkD2Vh8B3134phxOO/Ycix4nCqlbZIFzmy6KX7OAfVQ4tTlxy8NdItOQX5jqtNkCJ050PiAmo/3Gd4Gdl5ajRRdzkpWz0oo7Kvce3m8tWSvgeQEoCUxUD/lx3X48veyP0wjzLcFIzWR7JxnGV/SKQjWsN7Z/xP7qFWB/aO0H4iscLENSBOkaJ2hOBemNF4I5fO49TE9lDPVLnD/bgio0/lddEP725hzZpB7jwrjRTrzfZ42IhDaELWcUJt9 myzclient.myz.cloud# 推给目标主机root用户[rootserver ~]# mkdir -m 700 .ssh[rootserver ~]# cp ~myz/.ssh/authorized_keys .ssh# 客户端验证[myzclient ~11:29:26]$sshrootserverhostnameserver.myz.cloud以非交互方式生成密钥对[myzclient ~]$ ssh-keygen-trsa-N-fid_rsa_new[myzclient ~11:30:15]$ls*new* id_rsa_new id_rsa_new.pub其他选项# -i 指定私钥位置[myzclient ~11:35:43]$mv.ssh/id_rsa /tmp[myzclient ~11:35:53]$ssh-i/tmp/id_rsa rootserverhostnameserver.myz.cloud# 如果找不到密钥则使用密码登录# -p 选项指定目标服务器 sshd 服务端口号默认22[myzclient ~]$ssh-lroot-p1022serverhostnamerootservers password: server.laoma.cloud排故故障配置密钥登录后远程登录仍要需要输入密码验证。[rootclient ~]# ssh root10.1.8.10 hostnameroot10.1.8.10s password:模拟将目标主机上目标用户的家目录的权限改为777。[rootserver ~]# chmod 777 /root处理过程查看日志bash # 客户端登录的时候监控服务端日志 [rootserver ~]# tail -f /var/log/secure ...... Jul 31 16:13:41 server sshd[3693]: Authentication refused: bad ownership or modes for directory /root ......发现提示文件权限有问题。查找文件权限。bash [rootserver ~]# ls -ld /root drwxrwxrwx. 3 root root 4096 Jul 31 16:09 /root# 更改权限 [rootserver ~]# chmod 700 /root SSH 服务安全加固配置文件基础说明sshd服务配置文件/etc/ssh/sshd_config。帮助sshd_config(5)常见配置PermitRootLogin prohibit-password禁止root用户通过密码登录。PermitRootLogin no禁止 root 用户登录。root用户权限不受限制。root用户存在每个linux系统只需要猜密码就可以。从审计角度来看很难跟踪哪个授权用户以root身份登录并进行了更改。 如果用户必须以普通用户身份登录并切换到root帐户则会生成一个日志事件可用于帮助提供问责制。PasswordAuthentication no禁止用户使用密码登录。AllowUsers exampleuser允许特定用户登录该用户可以提权为root。UseDNS no客户端连接服务器的时候服务器不需要反向解析服务端IP地址提高连接速度。加固配置项1. 禁止 root 密码登录环境准备提前配置好 root 秘钥登录。[rootserver ~]# vim /etc/ssh/sshd_config#PermitRootLogin yes# 添加一行PermitRootLogin prohibit-password# 重启服务[rootserver ~]# systemctl reload sshd连接测试# 即使使用正确的密码也无法远程登录[myzclient ~14:49:11]$sshrootserverhostnamerootservers password: Permission denied, please try again. rootservers password: Permission denied, please try again. rootservers password: Permission denied(publickey,gssapi-keyex,gssapi-with-mic,password).# 如果配置了秘钥登录则需要使用选项强制密码认证[myzclient ~]$ssh-oPreferredAuthenticationspassword rootserver2. 禁止 root 登录环境准备[myzserver ~15:26:09]$sudovim/etc/ssh/sshd_config#PermitRootLogin yes# 添加一行PermitRootLogin no# 重启服务[rootserver ~]# systemctl reload sshd连接测试不管是密码还是秘钥都无法登录# 即使配置了免密登录也无法远程登录[myzclient ~14:49:50]$sshrootserverhostnamerootservers password: Permission denied, please try again. rootservers password: Permission denied, please try again. rootservers password: Permission denied(publickey,gssapi-keyex,gssapi-with-mic,password).# 但是可以使用普通用户登录然后提权为root用户[myzclient ~]$sshmyzserver[myzserver ~]$su-[rootserver ~]#3. 禁止密码登录环境准备[myzserver ~15:26:09]$sudovim/etc/ssh/sshd_config# 注释原有行#PasswordAuthentication yes# 添加新行设置为noPasswordAuthentication no# 重启服务[rootserver ~]# systemctl reload sshd连接测试秘钥可以登录# myz账户未配置密钥登录直接拒绝[myzclient ~]$ssh-oPreferredAuthenticationspassword myzserver Permission denied(publickey,gssapi-keyex,gssapi-with-mic).# 秘钥登录仍然支持[myzclient ~]$sshmyzserver Last login: Thu Jul2316:10:052026from10.1.8.114. 只允许特定用户登录环境准备laowang用户也可以秘钥登录。[rootserver ~]# useradd laowang[rootserver ~16:21:25]# passwd laowangChanging passwordforuser laowang. New password: BAD PASSWORD: The password is shorter than8characters Retype new password: passwd: all authentication tokens updated successfully.[rootserver ~]# mkdir -m 700 /home/laowang/.ssh/[rootserver ~]# cp .ssh/authorized_keys /home/laowang/.ssh/[rootserver ~]# chown -R laowang:laowang /home/laowang/.ssh/配置sshd服务[rootserver ~]# vim /etc/ssh/sshd_config# 最后添加一行AllowUsers laoma# 重启服务[rootserver ~]# systemctl reload sshd添加后如下图测试连接laoma 可以通过秘钥认证登录laowang不管通过什么方式认证都不可以登录。[myzclient ~]$sshlaowangserverhostnamePermission denied(publickey,gssapi-keyex,gssapi-with-mic).[myzclient ~]$sshmyzserverhostnameserver.myz.cloud

相关新闻

程序员必备:大模型扩展技能实战指南

程序员必备:大模型扩展技能实战指南

1. 为什么每个程序员都该掌握大模型扩展技能? 三年前我刚接触大模型时,以为这只是算法工程师的专属领域。直到用GPT-3的API给电商客服系统加了自动工单分类功能,才发现大模型正在重塑整个软件开发流程。现在连前端工程师都在用Copilot生成Rea…

2026/7/24 10:57:40 阅读更多 →
大模型技术学习路线:从Python基础到生产级开发

大模型技术学习路线:从Python基础到生产级开发

1. 大模型技术学习路线全景解析 2023年被称为大模型技术爆发的元年,从ChatGPT到Claude,从LLaMA到通义千问,各类大语言模型如雨后春笋般涌现。作为一线AI工程师,我观察到大量开发者面临"从何学起"的困惑。本文将分享经过…

2026/7/24 10:57:40 阅读更多 →
Seedream 5.0多模态AI图像生成技术解析与应用实践

Seedream 5.0多模态AI图像生成技术解析与应用实践

1. Seedream 5.0的技术革新解析 1.1 多模态架构升级 Seedream 5.0最核心的突破在于其统一多模态架构的全面升级。与传统的单一图像生成模型不同,它实现了文本、图像、数据等多维度输入的深度融合处理。在实际测试中,模型对复杂指令的理解准确率提升了47…

2026/7/24 10:56:39 阅读更多 →

最新新闻

AI抠图工具评测与电商图片批量处理实战

AI抠图工具评测与电商图片批量处理实战

1. 为什么我们需要更高效的抠图工具?在数字内容创作领域,抠图是最基础却最耗时的操作之一。传统Photoshop钢笔工具抠一张图动辄半小时起步,而电商平台商品上架往往需要处理上百张图片。我见过太多设计师因为重复性抠图工作加班到深夜&#xf…

2026/7/24 11:06:44 阅读更多 →
YOLO算法优势与工业应用实践解析

YOLO算法优势与工业应用实践解析

1. YOLO算法核心优势解析YOLO(You Only Look Once)作为当前最流行的实时目标检测算法之一,其单阶段检测架构在工业场景中展现出独特优势。与传统的两阶段检测器(如Faster R-CNN)相比,YOLO将目标检测转化为回…

2026/7/24 11:06:44 阅读更多 →
百考通:AI智能答辩PPT,让学术展示智能化,更高效从容

百考通:AI智能答辩PPT,让学术展示智能化,更高效从容

毕业季、开题季,一份专业出彩的PPT是顺利通过答辩的关键。但从论文中提炼核心观点、规划答辩逻辑、设计美观版式,往往让学生们焦头烂额。百考通(https://www.baikaotongai.com) 凭借AI技术深度赋能,打造出一站式答辩PP…

2026/7/24 11:06:44 阅读更多 →
基于协同过滤的旅游推荐系统开发实践

基于协同过滤的旅游推荐系统开发实践

1. 项目概述:旅游推荐系统的技术架构与商业价值这个基于协同过滤算法的旅游景点推荐系统,本质上是一个融合了Python后端、Django框架和Vue3前端的企业级解决方案。不同于普通的推荐demo,它特别强调了"商家"视角——这意味着系统需要…

2026/7/24 11:06:44 阅读更多 →
深入解析TMS320C6746内存映射与引脚复用:DSP底层开发实战指南

深入解析TMS320C6746内存映射与引脚复用:DSP底层开发实战指南

1. 项目概述:从芯片手册到实际板卡设计的关键桥梁如果你和我一样,是从单片机或ARM Cortex-M系列转向德州仪器(TI)的C6000系列DSP进行开发的工程师,那么第一次打开TMS320C6746那几百页的数据手册时,多半会感…

2026/7/24 11:06:44 阅读更多 →
AI小说生成API测评与优化实战指南

AI小说生成API测评与优化实战指南

1. 小说AI开发者的API选择困境 作为一名长期从事AI小说生成工具开发的工程师,我深知选择API平台时的纠结。去年我们团队在开发新一代故事生成器时,曾花费整整三个月时间对比测试市面上主流的7个API服务商。每次看到技术群里新人问"哪个AI写小说API最…

2026/7/24 11:05:44 阅读更多 →

日新闻

用Highcharts 创建可拖拽三维散点立方体3D图表

用Highcharts 创建可拖拽三维散点立方体3D图表

该案例基于Highcharts scatter3d 三维散点图实现空间立方体散点可视化,核心特色:三维 X/Y/Z 三轴空间,所有散点分布在 0~10 立方体空间内;散点使用径向渐变实现立体 3D 圆球质感;支持鼠标 / 触屏拖拽画布,…

2026/7/24 0:00:29 阅读更多 →
AppCertDlls:进程创建路径上的 DLL 入口

AppCertDlls:进程创建路径上的 DLL 入口

AppCertDlls:进程创建路径上的 DLL 入口 AppCertDlls 位于 HKLM\System\CurrentControlSet\Control\Session Manager\AppCertDlls。本文的程序功能是只读列出这个键在 64 位和 32 位注册表视图中的全部值,并显示每条值的来源、名称、类型和可安全显示的数…

2026/7/24 0:00:29 阅读更多 →
我的编程之路:第一篇博客

我的编程之路:第一篇博客

大家好,我是一名编程初学者,同时这也是我编程学习之路上的第一篇博客。在这里,我想要向大家介绍我的一些想法和规划。a.自我介绍我是一个刚刚接触编程的新手,目前在学习c语言,我对编程世界充满了强烈的好奇。当然&…

2026/7/24 0:00:29 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/24 3:59:20 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/24 1:23:39 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/23 17:49:47 阅读更多 →

月新闻