SSH 完全简介 + 两种远程登录方式详解(2025最新版)
SSH(Secure Shell)是目前最安全、最常用的远程登录协议,几乎所有服务器(Linux、路由器、交换机、NAS、云主机)都默认只开 22 端口 SSH。
一、SSH 是什么?为什么必须用它?
| 项目 | Telnet / rlogin | SSH(Secure Shell) |
|---|---|---|
| 是否加密 | 明文传输(密码全露) | 全程强加密(AES、ChaCha20 等) |
| 安全性 | 极差(随时被中间人截获) | 极高(防窃听、防篡改、防伪造) |
| 端口 | 23 | 22 |
| 当前状态 | 2025年已彻底淘汰 | 全球事实标准(OpenSSH 占 95%+) |
一句话:现在只要用 Telnet 登录服务器,等于把密码贴在互联网上喊。
二、SSH 两种最常见的远程登录方式(99%场景都用这俩)
| 登录方式 | 适用场景 | 安全性 | 方便程度 | 配置难度 |
|---|---|---|---|---|
| 方式1:密码登录 | 临时测试、新手、云主机默认 | 中等(密码强则安全) | ★★★★★ | 几乎为0 |
| 方式2:密钥登录 | 生产环境、自动化脚本、Git、跳板机 | 极高(无密码泄露风险) | ★★★★☆ | 稍高 |
方式1:密码登录(最简单,适合入门)
# 格式
ssh 用户名@服务器IP
# 示例
ssh root@123.45.67.89
ssh ubuntu@192.168.1.100
# 常用参数
ssh -p 2222 root@1.1.1.1 # 指定端口(非22)
ssh -o StrictHostKeyChecking=no user@host # 首次登录自动信任(脚本用)
缺点:密码弱会被暴力破解
2025年推荐:所有密码登录强制配合 Fail2Ban 或 阿里云/腾讯云的“安全组 + 密码复杂度检测”
方式2:密钥登录(公钥认证)——生产必备!
原理:你电脑放私钥,服务器放公钥,私钥不离身,永不传密码!
一步步教你配置(5分钟搞定)
- 本地生成密钥对(只做一次)
ssh-keygen -t ed25519 -C "your_email@example.com" # 推荐 ed25519(最安全)
# 或者老服务器用 rsa
ssh-keygen -t rsa -b 4096
# 回车后会在 ~/.ssh/ 生成:
# id_ed25519 → 私钥(死都不传!)
# id_ed25519.pub → 公钥(可以随便发)
- 把公钥上传到服务器(最常用3种方法)
方法A(最快):ssh-copy-id(推荐)
ssh-copy-id user@server_ip
# 第一次会问一次密码,之后永远免密
方法B:手动复制(适合第一次连不上时)
# 本地查看公钥
cat ~/.ssh/id_ed25519.pub
# 复制出来,登录服务器后执行:
mkdir -p ~/.ssh
chmod 700 ~/.ssh
echo "你的公钥内容" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
方法C:多台服务器批量分发(运维神器)
# 写个脚本循环 ssh-copy-id 就行
- 现在就可以免密登录了!
ssh user@server_ip # 直接进!不用输密码
- 生产环境再加这几招(安全拉满)
# 服务器端 /etc/ssh/sshd_config 修改后重启 sshd
PasswordAuthentication no # 彻底禁用密码登录
PubkeyAuthentication yes
PermitRootLogin no # 禁止 root 直接登录
AllowUsers alice bob # 只允许指定用户登录
# 改个高位端口(防暴力扫描)
Port 22222
终极对比表
| 项目 | 密码登录 | 密钥登录(推荐) |
|---|---|---|
| 是否需要输密码 | 每次都要 | 永久免密 |
| 密码泄露风险 | 高 | 无 |
| 被暴力破解风险 | 高(Fail2Ban 可缓解) | 几乎为0 |
| 支持自动化脚本 | 差(需 expect) | 完美(直接 ssh 命令) |
| Git/GitHub 拉代码 | 每次问密码 | 一劳永逸 |
| 跳板机/堡垒机场景 | 麻烦 | 天生支持 |
额外福利:2025年最强组合(安全+方便)
# 1. 用 ed25519 或 rsa 4096 生成密钥
# 2. 服务器禁用密码登录
# 3. 私钥再加 passphrase(口令)保护
# 4. 用 ssh-agent 或 1Password/keepass 记住 passphrase
# 5. 配置 ~/.ssh/config 实现一键登录
# 示例 config:
Host prod
HostName 123.45.67.89
User root
Port 22222
IdentityFile ~/.ssh/mykey_ed25519
# 之后只敲:ssh prod 就进去了!
总结一句话:
2025年,任何生产服务器只要还开着密码登录,就是在裸奔!
赶紧把所有服务器改成密钥登录吧,5分钟的事,安全提升100倍!
需要我给你一个“一键脚本”自动把100台服务器改成密钥登录 + 禁用密码 + 改端口,直接说一声!