论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
IT评测·应用市场-qidao123.com技术社区
»
论坛
›
运维.售后
›
运维.售后
›
Linux SSH 服务配置全解析:从基础到高级
Linux SSH 服务配置全解析:从基础到高级
饭宝
论坛元老
|
2025-4-19 16:03:01
|
显示全部楼层
|
阅读模式
楼主
主题
1644
|
帖子
1644
|
积分
4932
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
SSH(Secure Shell)是 Linux 系统中最重要的远程管理工具之一,它通过加密通道提供安全的远程登录和文件传输功能。在服务器管理、
开发
协作和一样平常
运维
中,SSH 的高效性和灵活性使其成为不可或缺的存在。本文将深入探究 Linux SSH 服务的配置,包括服务的启动与关闭机制、sshd_config 文件的详细配置项,以及用户级别的个性化设置(如 ~/.ssh/config)。无论你是初次接触 SSH 的新手,还是盼望优化配置的高级用户,这篇指南都将为你提供全面而实用的知识。
一、SSH 服务简介与安装
1.1 什么是 SSH?
SSH 是一种基于客户端-服务器模型的网络协议,用于在不安全的网络中安全传输数据。它最初由 Tatu Ylönen 于 1995 年
开发
,现已成为 Linux 和 Unix 系统的究竟尺度。SSH 通常用于:
远程登录
:通过 ssh 命令毗连到远程服务器。
文件传输
:使用 scp 或 sftp 传输文件。
隧道功能
:通过端口转发实现安全的网络代理。
在 Linux 中,SSH 服务通常由 OpenSSH 实现,它是一个开源的 SSH 协议套件,包括服务器端(sshd)和客户端(ssh)。
1.2 安装 OpenSSH
大多数 Linux 发行版默认安装了 OpenSSH。如果未安装,可通过包管理器手动安装:
Debian/Ubuntu
:
sudo apt update
sudo apt install openssh-server
复制代码
CentOS/RHEL
:
sudo yum install openssh-server
复制代码
Fedora
:
sudo dnf install openssh-server
复制代码
安装完成后,SSH 服务默认启动,配置文件位于 /etc/ssh/sshd_config,客户端配置文件位于 /etc/ssh/ssh_config。
二、SSH 服务的启动与关闭机制
Linux 中管理 SSH 服务的方式随系统演进发生了显著变革,从早期的 service 脚本到当代的 systemctl 命令,反映了系统管理工具的当代化进程。
2.1 早期机制:service 和 /etc/init.d
在基于 SysVinit 的系统中(例如早期的 CentOS 6 或 Ubuntu 14.04),SSH 服务通过脚本管理,脚本通常位于 /etc/init.d/ 目录下。
2.1.1 查看服务状态
检查 SSH 服务是否运行:
sudo service ssh status
复制代码
或:
sudo /etc/init.d/ssh status
复制代码
输出可能显示 sshd is running 或 sshd is stopped。
2.1.2 启动服务
启动 SSH 服务:
sudo service ssh start
复制代码
或:
sudo /etc/init.d/ssh start
复制代码
2.1.3 制止服务
制止 SSH 服务:
sudo service ssh stop
复制代码
或:
sudo /etc/init.d/ssh stop
复制代码
2.1.4 重启服务
重启服务以应用配置更改:
sudo service ssh restart
复制代码
2.1.5 开机自启
设置服务开机启动:
sudo update-rc.d ssh enable # Debian/Ubuntu
sudo chkconfig ssh on # CentOS/RHEL
复制代码
禁用开机启动:
sudo update-rc.d ssh disable
sudo chkconfig ssh off
复制代码
2.1.6 历史配景
SysVinit 使用 shell 脚原来管理服务,/etc/init.d/ssh 是一个可实行脚本,定义了 start、stop、restart 等操作。这种方式固然直观,但缺乏依赖管理,且脚本编写差别一,难以应对复杂系统。
2.2 当代化机制:systemctl 和 Systemd
当代 Linux 发行版(如 Ubuntu 16.04+、CentOS 7+)采用 Systemd 作为初始化系统,SSH 服务由 systemctl 命令管理,服务单元文件通常位于 /lib/systemd/system/ssh.service。
2.2.1 查看服务状态
检查 SSH 服务状态:
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 Mon 2025-03-17 10:00:00 UTC; 1h ago
复制代码
注意:服务名称可能是 ssh 或 sshd,视发行版而定(Ubuntu 用 ssh,CentOS 用 sshd)。
2.2.2 启动服务
启动 SSH 服务:
sudo systemctl start ssh
复制代码
2.2.3 制止服务
制止 SSH 服务:
sudo systemctl stop ssh
复制代码
2.2.4 重启服务
重启服务:
sudo systemctl restart ssh
复制代码
平滑重载(不中断现有毗连):
sudo systemctl reload ssh
复制代码
2.2.5 开机自启
启用开机启动:
sudo systemctl enable ssh
复制代码
输出可能显示创建符号链接,表现服务已加入启动项。
禁用开机启动:
sudo systemctl disable ssh
复制代码
2.2.6 检查服务日记
查看 SSH 服务日记:
sudo journalctl -u ssh
复制代码
这对调试启动失败或毗连问题非常有用。
2.2.7 Systemd 的优势
Systemd 相比 SysVinit 提供了依赖管理、并行启动和服务状态跟踪等功能。例如,ssh.service 文件可能定义:
[Unit]
Description=OpenBSD Secure Shell server
After=network.target
[Service]
ExecStart=/usr/sbin/sshd -D
Restart=on-failure
[Install]
WantedBy=multi-user.target
复制代码
这确保 SSH 在网络可用后启动,并支持故障自动重启。
2.3 两种机制的对比
SysVinit
:简单直观,得当小型系统,但扩展性差。
Systemd
:功能强大,支持复杂依赖,得当当代服务器。
在实际使用中,建议检查发行版初始化系统(ps -p 1 -o comm= 输出 systemd 或 init)以选择精确命令。
三、sshd_config 配置详解
SSH 服务端的核心配置文件是 /etc/ssh/sshd_config,它控制着 sshd 的举动。修改后需重启服务(systemctl restart ssh)使配置见效。以下是重要配置项的逐一解析。
3.1 文件结构与默认设置
默认路径:/etc/ssh/sshd_config
格式:键值对,# 开头为解释。
示例默认内容:
#Port 22
#ListenAddress 0.0.0.0
#PermitRootLogin yes
复制代码
3.2 常用配置项
3.2.1 端口与监听地址
Port
:指定 SSH 监听端口,默认 22。
Port 2222
复制代码
修改端口可降低扫描风险,但需调整防火墙规则。
ListenAddress
:指定监听的 IP 地址。
ListenAddress 192.168.1.10
ListenAddress ::1
复制代码
默认 0.0.0.0(IPv4)和 ::(IPv6)表现监听全部接口。
3.2.2 用户登录控制
PermitRootLogin
:是否答应 root 登录。
PermitRootLogin no
复制代码
推荐设为 no,使用平凡用户通过 sudo 提拔权限。
AllowUsers
:限制答应登录的用户。
AllowUsers alice bob
复制代码
只答应指定用户登录,未列出的用户被拒绝。
DenyUsers
:克制特定用户登录。
DenyUsers guest
复制代码
3.2.3 认证方式
PasswordAuthentication
:是否答应密码登录。
PasswordAuthentication no
复制代码
设为 no 强制使用密钥认证,提拔安全性。
PubkeyAuthentication
:启用公钥认证。
PubkeyAuthentication yes
复制代码
AuthorizedKeysFile
:指定公钥文件路径。
AuthorizedKeysFile .ssh/authorized_keys
复制代码
3.2.4 会话与超时
ClientAliveInterval
:客户端存活检测间隔(秒)。
ClientAliveInterval 300
复制代码
每 300 秒发送一次探测,防止毗连超时断开。
ClientAliveCountMax
:最大探测失败次数。
ClientAliveCountMax 3
复制代码
连续 3 次未响应则断开毗连。
MaxAuthTries
:最大认证尝试次数。
MaxAuthTries 3
复制代码
限制密码推测次数,加强安全性。
3.2.5 文件传输与转发
PermitTunnel
:是否答应隧道。
PermitTunnel yes
复制代码
AllowTcpForwarding
:是否答应 TCP 转发。
AllowTcpForwarding yes
复制代码
X11Forwarding
:是否答应 X11 图形转发。
X11Forwarding no
复制代码
3.2.6 日记与调试
LogLevel
:日记级别。
LogLevel INFO
复制代码
可选值:QUIET、INFO、VERBOSE、DEBUG。
SyslogFacility
:日记设施。
SyslogFacility AUTH
复制代码
3.3 配置示例:安全优化
以下是一个强化安全性的 sshd_config 示例:
Port 2222
ListenAddress 192.168.1.10PermitRootLogin no
AllowUsers alice bob
PasswordAuthentication no
PubkeyAuthentication yes
ClientAliveInterval 300
ClientAliveCountMax 3
MaxAuthTries 3
AllowTcpForwarding noX11Forwarding no
LogLevel VERBOSE
复制代码
修改后,运行:
sudo systemctl restart ssh
sudo systemctl status ssh
复制代码
确认服务正常运行。
3.4 验证配置
检查语法错误:
sudo sshd -t
复制代码
无输出表现配置精确,否则显示错误行。
测试毗连:
ssh -p 2222 alice@192.168.1.10
复制代码
四、~/.ssh/config 用户个性化配置
除了服务端配置,用户可以通过 ~/.ssh/config 文件自定义客户端举动,简化 SSH 操作并加强体验。
4.1 文件创建与权限
创建文件:
mkdir -p ~/.ssh
touch ~/.ssh/config
复制代码
设置权限:
chmod 600 ~/.ssh/config
复制代码
4.2 配置结构
格式:基于 Host 的键值对。
示例:
Host myserver
HostName 192.168.1.10
User alice
Port 2222
复制代码
4.3 常用配置项
4.3.1 全局配置
对全部毗连见效,使用 Host *:
Host *
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
复制代码
StrictHostKeyChecking no
:跳过主秘密钥验证(不安全,仅限测试)。
UserKnownHostsFile /dev/null
:不生存已知主机记录。
4.3.2 主机别名
简化登录:
Host myserver HostName server.example.com User bob Port 2222
IdentityFile ~/.ssh/mykey
复制代码
登录命令简化为:
ssh myserver
复制代码
4.3.3 密钥与认证
指定私钥:
Host myserver
IdentityFile ~/.ssh/id_rsa_custom
复制代码
禁用密码登录:
Host myserver
PasswordAuthentication no
复制代码
4.3.4 代理与跳转
使用跳板机:
Host jump
HostName jump.example.com
User alice
Host target
HostName 192.168.1.100
User bob
ProxyJump jump
复制代码
登录:
ssh target
复制代码
4.3.5 超时与毗连
设置超时:
Host *
ConnectTimeout 10
ServerAliveInterval 60
复制代码
4.4 配置示例:实用组合
Host *
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
ServerAliveInterval 60 ConnectTimeout 10Host dev-server HostName 192.168.1.10 User alice Port 2222
IdentityFile ~/.ssh/dev_keyHost prod-server HostName prod.example.com User bob ProxyJump dev-server
复制代码
测试:
ssh dev-server
ssh prod-server
复制代码
4.5 注意事项
安全性
:制止滥用 StrictHostKeyChecking no,生产环境应保留密钥检查。
优先级
:用户配置覆盖全局 /etc/ssh/ssh_config。
调试
:用 ssh -v 查看毗连详情。
五、最佳实践与故障排除
5.1 最佳实践
密钥认证
:禁用密码登录,使用 SSH 密钥。
端口调整
:更改默认 22 端口,淘汰扫描攻击。
防火墙
:配置 ufw 或 iptables 限制访问。
sudo ufw allow 2222/tcp
复制代码
备份配置
:修改前备份 sshd_config。
5.2 常见问题
毗连超时
:
检查端口(sshd_config 和防火墙)。
确认服务运行:systemctl status ssh。
认证失败
:
检查密钥权限:chmod 600 ~/.ssh/id_rsa。
查看日记:journalctl -u ssh。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
饭宝
论坛元老
这个人很懒什么都没写!
楼主热帖
53基于java的资源博客论坛系统设计与实 ...
zotero+坚果云实现多pc端及iPad同步管 ...
Android——一个简单的记账本APP ...
天涯神贴合集500篇(2023最新) ...
需求:清空三个月前的操作日志,并生成 ...
面试官:@Configuration 和 @Component ...
nginx 常用指令配置总结
【分布式计算】学习笔记(期末复习) ...
PerfView专题 (第十一篇):使用 Diff ...
Python潮流周刊#5:并发一百万个任务要 ...
标签云
AI
运维
CIO
存储
服务器
浏览过的版块
备份
Postrge-SQL技术社区
MES
云原生
图数据库
快速回复
返回顶部
返回列表