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
    1. sudo apt update
    2. sudo apt install openssh-server
    复制代码
  • CentOS/RHEL
    1. sudo yum install openssh-server
    复制代码
  • Fedora
    1. 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 服务是否运行:
    1. sudo service ssh status
    复制代码
    或:
    1. sudo /etc/init.d/ssh status
    复制代码
    输出可能显示 sshd is running 或 sshd is stopped。
2.1.2 启动服务



  • 启动 SSH 服务:
    1. sudo service ssh start
    复制代码
    或:
    1. sudo /etc/init.d/ssh start
    复制代码
2.1.3 制止服务



  • 制止 SSH 服务:
    1. sudo service ssh stop
    复制代码
    或:
    1. sudo /etc/init.d/ssh stop
    复制代码
2.1.4 重启服务



  • 重启服务以应用配置更改:
    1. sudo service ssh restart
    复制代码
2.1.5 开机自启



  • 设置服务开机启动:
    1. sudo update-rc.d ssh enable  # Debian/Ubuntu
    2. sudo chkconfig ssh on       # CentOS/RHEL
    复制代码
  • 禁用开机启动:
    1. sudo update-rc.d ssh disable
    2. 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 服务状态:
    1. sudo systemctl status ssh
    复制代码
    输出示例:
    1. ● ssh.service - OpenBSD Secure Shell server
    2.    Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
    3.    Active: active (running) since Mon 2025-03-17 10:00:00 UTC; 1h ago
    复制代码
    注意:服务名称可能是 ssh 或 sshd,视发行版而定(Ubuntu 用 ssh,CentOS 用 sshd)。
2.2.2 启动服务



  • 启动 SSH 服务:
    1. sudo systemctl start ssh
    复制代码
2.2.3 制止服务



  • 制止 SSH 服务:
    1. sudo systemctl stop ssh
    复制代码
2.2.4 重启服务



  • 重启服务:
    1. sudo systemctl restart ssh
    复制代码
  • 平滑重载(不中断现有毗连):
    1. sudo systemctl reload ssh
    复制代码
2.2.5 开机自启



  • 启用开机启动:
    1. sudo systemctl enable ssh
    复制代码
    输出可能显示创建符号链接,表现服务已加入启动项。
  • 禁用开机启动:
    1. sudo systemctl disable ssh
    复制代码
2.2.6 检查服务日记



  • 查看 SSH 服务日记:
    1. sudo journalctl -u ssh
    复制代码
    这对调试启动失败或毗连问题非常有用。
2.2.7 Systemd 的优势

Systemd 相比 SysVinit 提供了依赖管理、并行启动和服务状态跟踪等功能。例如,ssh.service 文件可能定义:
  1. [Unit]
  2. Description=OpenBSD Secure Shell server
  3. After=network.target
  4. [Service]
  5. ExecStart=/usr/sbin/sshd -D
  6. Restart=on-failure
  7. [Install]
  8. 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
  • 格式:键值对,# 开头为解释。
  • 示例默认内容:
    1. #Port 22
    2. #ListenAddress 0.0.0.0
    3. #PermitRootLogin yes
    复制代码
3.2 常用配置项

3.2.1 端口与监听地址



  • Port:指定 SSH 监听端口,默认 22。
    1. Port 2222
    复制代码

    • 修改端口可降低扫描风险,但需调整防火墙规则。

  • ListenAddress:指定监听的 IP 地址。
    1. ListenAddress 192.168.1.10
    2. ListenAddress ::1
    复制代码

    • 默认 0.0.0.0(IPv4)和 ::(IPv6)表现监听全部接口。

3.2.2 用户登录控制



  • PermitRootLogin:是否答应 root 登录。
    1. PermitRootLogin no
    复制代码

    • 推荐设为 no,使用平凡用户通过 sudo 提拔权限。

  • AllowUsers:限制答应登录的用户。
    1. AllowUsers alice bob
    复制代码

    • 只答应指定用户登录,未列出的用户被拒绝。

  • DenyUsers:克制特定用户登录。
    1. DenyUsers guest
    复制代码
3.2.3 认证方式



  • PasswordAuthentication:是否答应密码登录。
    1. PasswordAuthentication no
    复制代码

    • 设为 no 强制使用密钥认证,提拔安全性。

  • PubkeyAuthentication:启用公钥认证。
    1. PubkeyAuthentication yes
    复制代码
  • AuthorizedKeysFile:指定公钥文件路径。
    1. AuthorizedKeysFile .ssh/authorized_keys
    复制代码
3.2.4 会话与超时



  • ClientAliveInterval:客户端存活检测间隔(秒)。
    1. ClientAliveInterval 300
    复制代码

    • 每 300 秒发送一次探测,防止毗连超时断开。

  • ClientAliveCountMax:最大探测失败次数。
    1. ClientAliveCountMax 3
    复制代码

    • 连续 3 次未响应则断开毗连。

  • MaxAuthTries:最大认证尝试次数。
    1. MaxAuthTries 3
    复制代码

    • 限制密码推测次数,加强安全性。

3.2.5 文件传输与转发



  • PermitTunnel:是否答应隧道。
    1. PermitTunnel yes
    复制代码
  • AllowTcpForwarding:是否答应 TCP 转发。
    1. AllowTcpForwarding yes
    复制代码
  • X11Forwarding:是否答应 X11 图形转发。
    1. X11Forwarding no
    复制代码
3.2.6 日记与调试



  • LogLevel:日记级别。
    1. LogLevel INFO
    复制代码

    • 可选值:QUIET、INFO、VERBOSE、DEBUG。

  • SyslogFacility:日记设施。
    1. SyslogFacility AUTH
    复制代码
3.3 配置示例:安全优化

以下是一个强化安全性的 sshd_config 示例:
  1. Port 2222
  2. ListenAddress 192.168.1.10PermitRootLogin no
  3. AllowUsers alice bob
  4. PasswordAuthentication no
  5. PubkeyAuthentication yes
  6. ClientAliveInterval 300
  7. ClientAliveCountMax 3
  8. MaxAuthTries 3
  9. AllowTcpForwarding noX11Forwarding no
  10. LogLevel VERBOSE
复制代码
修改后,运行:
  1. sudo systemctl restart ssh
  2. sudo systemctl status ssh
复制代码
确认服务正常运行。
3.4 验证配置



  • 检查语法错误:
    1. sudo sshd -t
    复制代码

    • 无输出表现配置精确,否则显示错误行。

  • 测试毗连:
    1. ssh -p 2222 alice@192.168.1.10
    复制代码

四、~/.ssh/config 用户个性化配置

除了服务端配置,用户可以通过 ~/.ssh/config 文件自定义客户端举动,简化 SSH 操作并加强体验。
4.1 文件创建与权限



  • 创建文件:
    1. mkdir -p ~/.ssh
    2. touch ~/.ssh/config
    复制代码
  • 设置权限:
    1. chmod 600 ~/.ssh/config
    复制代码
4.2 配置结构



  • 格式:基于 Host 的键值对。
  • 示例:
    1. Host myserver
    2.     HostName 192.168.1.10
    3.     User alice
    4.     Port 2222
    复制代码
4.3 常用配置项

4.3.1 全局配置



  • 对全部毗连见效,使用 Host *:
    1. Host *
    2.     StrictHostKeyChecking no
    3.     UserKnownHostsFile /dev/null
    复制代码

    • StrictHostKeyChecking no:跳过主秘密钥验证(不安全,仅限测试)。
    • UserKnownHostsFile /dev/null:不生存已知主机记录。

4.3.2 主机别名



  • 简化登录:
    1. Host myserver    HostName server.example.com    User bob    Port 2222
    2.     IdentityFile ~/.ssh/mykey
    复制代码

    • 登录命令简化为:
      1. ssh myserver
      复制代码

4.3.3 密钥与认证



  • 指定私钥:
    1. Host myserver
    2.     IdentityFile ~/.ssh/id_rsa_custom
    复制代码
  • 禁用密码登录:
    1. Host myserver
    2.     PasswordAuthentication no
    复制代码
4.3.4 代理与跳转



  • 使用跳板机:
    1. Host jump
    2.     HostName jump.example.com
    3.     User alice
    4. Host target
    5.     HostName 192.168.1.100
    6.     User bob
    7.     ProxyJump jump
    复制代码

    • 登录:
      1. ssh target
      复制代码

4.3.5 超时与毗连



  • 设置超时:
    1. Host *
    2.     ConnectTimeout 10
    3.     ServerAliveInterval 60
    复制代码
4.4 配置示例:实用组合

  1. Host *
  2.     StrictHostKeyChecking no
  3.     UserKnownHostsFile /dev/null
  4.     ServerAliveInterval 60    ConnectTimeout 10Host dev-server    HostName 192.168.1.10    User alice    Port 2222
  5.     IdentityFile ~/.ssh/dev_keyHost prod-server    HostName prod.example.com    User bob    ProxyJump dev-server
复制代码


  • 测试:
    1. ssh dev-server
    2. ssh prod-server
    复制代码
4.5 注意事项



  • 安全性:制止滥用 StrictHostKeyChecking no,生产环境应保留密钥检查。
  • 优先级:用户配置覆盖全局 /etc/ssh/ssh_config。
  • 调试:用 ssh -v 查看毗连详情。

五、最佳实践与故障排除

5.1 最佳实践



  • 密钥认证:禁用密码登录,使用 SSH 密钥。
  • 端口调整:更改默认 22 端口,淘汰扫描攻击。
  • 防火墙:配置 ufw 或 iptables 限制访问。
    1. 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 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

饭宝

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表