SSH 与 22 端口
SSH(Secure Shell)是加密的远程登录协议,用于替代 telnet、rsh 等明文方式。22 是它的默认端口:Linux/Unix 服务器、网络设备、一切支持命令行的系统都通过它做远程管理,SFTP/SCP 文件传输与 SSH 隧道同样建立在这个端口上。
| 服务 | SSH(sshd / OpenSSH) |
|---|---|
| 协议 | TCP |
| 用途 | 加密远程登录、SFTP/SCP、端口转发、隧道 |
| 安全等级 | 公网暴露必须加固 |
典型使用场景
- 登录 Linux 服务器做日常运维(云主机默认放行的远程管理端口)
- 管理网络设备:华为/思科/H3C 等设备的命令行登录
- SFTP/SCP 传输文件:替代明文 FTP 的加密通道
- SSH 隧道与端口转发:内网服务跳板访问、数据库安全接入
- 自动化与批量执行:Ansible、CI/CD 部署脚本的连接通道
客户端基础用法
客户端基础用法
ssh user@server # 登录服务器(默认 22 端口)
ssh -p 2222 user@server # 非默认端口
ssh -i ~/.ssh/id_ed25519 user@server # 指定私钥登录
sftp user@server # 交互式文件传输
scp ./app.tar.gz user@server:/tmp/ # 单次复制文件
ssh -L 3306:db.internal:3306 user@jump # 本地端口转发示例
ssh -R 9000:localhost:3000 user@server # 远程转发:把本地服务暴露给远端
ssh -D 1080 user@jump # 动态转发:本地 SOCKS 代理常见攻击与加固对照
| 风险 | 说明 | 加固建议 |
|---|---|---|
| 口令爆破 | 针对 root/admin 的自动化尝试 | 禁用密码登录,改用密钥认证 |
| 弱口令 | 字典可命中常见口令 | 强口令策略 + 失败锁定 |
| 版本漏洞 | OpenSSH 历史漏洞影响面大 | 保持版本更新与补丁 |
sshd_config 关键加固项
sshd_config 关键加固项
PasswordAuthentication no
PubkeyAuthentication yes
PermitRootLogin prohibit-password
MaxAuthTries 3
LoginGraceTime 30firewalld 仅放行管理网段
firewalld 仅放行管理网段
firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address=10.0.0.0/8 port port=22 protocol=tcp accept'
firewall-cmd --reload不要把 22 直接裸奔公网;至少组合:密钥认证 + 来源限制 + fail2ban,必要时经堡垒机。
密钥登录三步走
密钥登录三步走
ssh-keygen -t ed25519 -C 'ops@example.com'
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@server
ssh -o PreferredAuthentications=publickey user@server # 验证密钥可用检查最终生效的 sshd 配置
检查最终生效的 sshd 配置
sshd -T | grep -E 'passwordauthentication|permitrootlogin|maxauthtries'
sudo sshd -t && sudo systemctl reload sshd # 改配置先语法检查再重载fail2ban 可与 22 的登录失败联动封禁:确认 jail 的 logpath 与实际系统一致(Debian 系 /var/log/auth.log,RHEL 系 /var/log/secure),并排除堡垒机与监控来源防误封。
网络设备侧开启 SSH 的方式各不相同:华为 VRP 用 stelnet server enable,思科 IOS 需要先生成 RSA 密钥(crypto key generate rsa)再在 vty 下 transport input ssh;具体步骤以对应版本手册为准。