CodeRoadMap
首页路线题库资源库文章社区
CodeRoadMap

程序员的学习成长路线图。内容免费开放,登录后可同步路线图与课时进度。

由 程序员柏风 独立维护 · 关于作者

学习

  • 路线图
  • 课程
  • 面试题
  • 文章
  • 我

更多

  • 资源
  • 社区
  • 关于作者
  • 内容说明

© 2026 CodeRoadMap

津ICP备2026012044号-1·津公网安备12011002026155号·coderoadmap@126.com
DevOps 网络与邮件/课时/SSH 远程管理
RawBlame
课时目录12 节

DevOps 网络与邮件

  1. 01网络与运维基础
  2. 02OSI 与分层
  3. 03SSH 远程管理
  4. 04FTP 与 SFTP
  5. 05SMTP 发信
  6. 06IMAP 与 POP3
  7. 07邮件认证
  8. 08编辑器与文本处理
  9. 09版本控制回顾
  10. 10编程语言选型
  11. 11邮件运维排障
  12. 12综合练习

SSH 远程管理

ssh;密钥与跳板。

30 分钟

SSH:DevOps 远程管理核心

SSH(Secure Shell)是运维登录 Linux 服务器、执行命令、传输文件的标准方式。本课在 linux-essentials 的 linux-ssh 基础上,补充 密钥管理、隧道转发、SSH 配置最佳实践;网络基础见 networking-essentials,配置版本化见 git-essentials,服务器域名解析见 dns-essentials。

学习目标

  • 配置 密钥登录 并禁用密码登录(生产环境)
  • 使用 SSH 隧道 访问仅监听 127.0.0.1 的服务
  • 编写 ~/.ssh/config 简化多服务器管理

SSH 基础连接

# 生成 ED25519 密钥(推荐)
ssh-keygen -t ed25519 -C "devops@example.com" -f ~/.ssh/id_ed25519

# 复制公钥到服务器
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@server.example.com

# 登录
ssh user@server.example.com

端口 22/TCP,应用层协议,传输层 TCP,会话加密在 SSH 协议内部完成(类似 OSI L5-L7 合一)。

服务器端加固

编辑 /etc/ssh/sshd_config:

Port 22
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
MaxAuthTries 3
AllowUsers deploy ops
# 修改前务必保留一个已登录会话,防止锁死
sudo sshd -t          # 语法检查
sudo systemctl reload sshd

与 sec-server 一致:禁止 0.0.0.0/0 弱口令 SSH 是服务器安全底线。

SSH 隧道:访问内网服务

CodeRoadMap 的 MySQL :3306 和 backend :8080 通常 仅绑定 127.0.0.1,管理员通过 SSH 隧道访问:

# 本地转发:本机 18080 → 服务器 127.0.0.1:8080
ssh -L 18080:127.0.0.1:8080 user@server.example.com

# 另一个终端
curl http://127.0.0.1:18080/actuator/health

# 本地转发 MySQL
ssh -L 13306:127.0.0.1:3306 user@server.example.com
mysql -h 127.0.0.1 -P 13306 -u app -p

详见 net-vpn 的 SSH 隧道章节。

~/.ssh/config 多主机管理

Host prod
    HostName server.example.com
    User deploy
    IdentityFile ~/.ssh/id_ed25519
    LocalForward 18080 127.0.0.1:8080

Host staging
    HostName staging.example.com
    User deploy
    IdentityFile ~/.ssh/id_ed25519_staging
ssh prod # 等价于 ssh deploy@server.example.com -i ~/.ssh/id_ed25519

建议将 config 纳入 git-essentials 管理的 dotfiles 仓库(私钥除外)。

SCP / SFTP 文件传输

# 上传部署包
scp ./app.jar deploy@prod:/opt/app/

# 递归上传目录
scp -r ./config/ deploy@prod:/etc/myapp/

# SFTP 交互式
sftp deploy@prod
sftp> put local.conf /etc/myapp/app.conf

SFTP 走 SSH 通道,比传统 FTP 更安全——下一课对比 FTP。

练习

  • 生成 ED25519 密钥并完成 ssh-copy-id 免密登录
  • 用 -L 隧道访问服务器上仅回环监听的 8080 端口
  • 编写 ~/.ssh/config,为 prod/staging 各建一个 Host 别名

小结

SSH = 加密远程 Shell + 文件传输 + 端口隧道,DevOps 日常第一工具。 生产环境务必密钥登录、禁 root、限 AllowUsers。下一课讲 FTP——遗留系统与批量传输场景。

加载本节练习…
← 上一课OSI 与分层下一课 →FTP 与 SFTP