深入浅出 SSH

一个交互式指南,带你从入门到精通,掌握安全远程连接的艺术。

💻

你的电脑

🔒 安全加密通道
☁️

远程服务器

滚动页面,开始你的 SSH 探索之旅。

什么是 SSH?

SSH (Secure Shell) 是一种网络协议,用于在不安全的网络上安全地操作网络服务。它就像一个加密的管道,保护你和远程服务器之间的所有通信。

SSH 连接的两个阶段

点击按钮,查看 SSH 如何建立安全连接。

💻

客户端

非对称加密握手

客户端和服务器交换公钥,协商出一个只有双方知道的、用于本次会话的“秘密密码”(会话密钥)。这个过程确保了密钥交换的安全性。

☁️

服务器

密钥管理策略

管理多台服务器的密钥是系统管理员的常见问题。以下是两种主流策略的对比,帮助你做出最佳选择。

策略 A: 一把钥匙开多扇门

在你的本地机器上使用一个私钥,并将对应的公钥部署到所有你管理的服务器上。

优点:

  • 管理简单,只需保护一个私钥。
  • 部署新服务器时操作统一。

缺点:

  • 私钥一旦泄露,所有服务器都将面临风险。
  • 无法单独撤销对某台服务器的访问权限。

策略 B: 一门一钥匙 (推荐)

为每一台(或每一组)服务器生成一个独立的密钥对。本地机器管理多个私钥。

优点:

  • 安全性极高,风险隔离。
  • 可以精细化地管理和撤销访问权限。

缺点:

  • 本地需要管理多个私钥,稍显复杂。
  • 连接不同服务器时可能需要指定密钥。

策略对比可视化

点击按钮,切换查看不同维度的评分。

SSH 安全强化清单

默认的 SSH 配置并不完美。遵循这些最佳实践,可以极大地提高你服务器的安全性。点击卡片查看详情和配置示例。

🚫 禁用密码认证

强制使用密钥认证,杜绝暴力破解密码的风险。

/etc/ssh/sshd_config

PasswordAuthentication no

👤 禁止 Root 登录

避免直接使用 root 用户登录,强制使用普通用户再提权。

/etc/ssh/sshd_config

PermitRootLogin no

🔢 更改默认端口

将 SSH 端口从 22 改为其他高位端口,躲避自动化扫描。

/etc/ssh/sshd_config

Port 2222

🛡️ 使用 Fail2Ban

自动禁止多次尝试登录失败的 IP 地址。

这是一个软件,需要安装和配置,例如在 Debian/Ubuntu:

sudo apt update
sudo apt install fail2ban

🔥 配置防火墙

只允许受信任的 IP 或特定端口访问 SSH 服务。

使用 UFW (Uncomplicated Firewall) 的示例:

sudo ufw allow 2222/tcp
sudo ufw enable

⏳ 限制登录尝试

在认证成功前,限制单一连接的最大尝试次数。

/etc/ssh/sshd_config

MaxAuthTries 3

高级技巧:隧道与跳板机

利用 SSH 的强大功能来保护其他网络流量,并构建更安全的网络架构,减少服务暴露面。

探索高级用法

点击按钮,切换查看不同的高级技巧示意图。

SSH 隧道 (端口转发)

将本地端口的流量通过 SSH 加密通道转发到远程服务器,从而安全地访问远程服务器上的服务(如数据库),就好像它在你本地一样。

💻

你的电脑

访问 localhost:8080

🔒 SSH 加密通道
☁️

远程服务器

SSH 将流量转发到

db.server:5432

示例命令:

ssh -L 8080:db.server:5432 user@remote-server.com