SSH 指北
SSH(Secure Shell)[1]是远程连接服务器的安全协议。它加密所有通信,替代了不安全的 Telnet,让你能安全地管理远程服务器。
SSH 登录原理
执行 ssh user@server 时,系统会:
- 建立安全通道 - 加密所有通信
- 验证服务器身份 - 确认连接到正确服务器
- 验证用户身份 - 通过密码或密钥
推荐使用密钥登录,更安全且无需重复输入密码。
SSH 密钥登录
三步设置免密登录
1. 生成密钥对
bash
ssh-keygen -t ed25519 -C "your_email@example.com"1
2. 复制公钥到服务器
bash
ssh-copy-id user@server1
3. 免密登录
bash
ssh user@server1
🔒 安全原理:私钥保留在本地,公钥放在服务器。只有匹配的密钥对才能通过验证。
常用命令与技巧
| 操作 | 命令 | 说明 |
|---|---|---|
| 基本登录 | ssh user@server | 登录远程服务器 |
| 指定端口 | ssh -p 2222 user@server | 使用非默认22端口 |
| 远程执行 | ssh user@server "ls -lh" | 在远程服务器执行命令 |
| 文件上传 | scp file.txt user@server:/path/ | 安全复制文件 |
| 目录同步 | rsync -avz ./src user@server:/dest/ | 增量同步目录 |
配置文件简化登录
编辑 ~/.ssh/config:
bash
Host myserver
HostName 192.168.1.10
User root
IdentityFile ~/.ssh/id_ed255191
2
3
4
2
3
4
配置后直接使用 ssh myserver 登录。
GitHub SSH 配置案例
GitHub 提供 HTTPS 和 SSH 两种连接方式。SSH 方式更安全且免密码。
配置步骤
1. 生成 SSH 密钥
bash
ssh-keygen -t ed25519 -C "your_email@example.com"1
2. 添加公钥到 GitHub
- 复制公钥内容:
bash
cat ~/.ssh/id_ed25519.pub1
- 访问 GitHub → Settings → SSH and GPG keys → New SSH key
3. 测试连接
bash
ssh -T git@github.com1
成功提示:Hi your_name! You've successfully authenticated.
4. 使用 SSH 克隆
bash
git clone git@github.com:your_name/repo.git1
常见问题解决
权限错误
bash
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_*1
2
2
主机密钥变更
bash
ssh-keygen -R server_ip1
高级功能
| 功能 | 命令 | 用途 |
|---|---|---|
| 本地端口转发 | ssh -L 8080:localhost:80 user@server | 访问远程服务 |
| 远程端口转发 | ssh -R 6000:localhost:22 user@server | 内网穿透 |
| 多跳连接 | ssh -J jump@bastion target@server | 连接内网机器 |
| 文件管理 | sftp user@server | 安全文件传输 |
总结
掌握 SSH 后,你可以:
- 🔧 管理云服务器和部署项目
- 💻 使用 VSCode 远程开发
- 🚀 GitHub 免密推送代码
- 📚 高效学习 Linux 系统
SSH 是打开远程世界大门的钥匙,让你真正与世界上的计算机系统对话。
