云计算百科
云计算领域专业知识百科平台

多用户通过 VS Code 远程 SSH 管理多台 Linux 服务器的最佳实践

多用户通过 VS Code 远程 SSH 管理多台 Linux 服务器的最佳实践

一、文档目的

本文档提供清晰、高效、安全的指南,帮助技术团队使用 VSCode Remote-SSH 插件,实现多用户(不同客户端系统)免密远程连接到多台 Linux 服务器。涉及密钥生成、配置 SSH 客户端、服务器安全加固以及 ForwardAgent 的最佳使用。

二、架构示意图

客户端A (Windows/macOS)
├── SSH密钥
│ ├── 私钥(本地)
│ └── 公钥 → 开发环境服务器 authorized_keys

└── VSCode Remote-SSH
└── 配置(config)
├── Host srv-dev-ai-01 → 开发环境服务器
└── Host srv-prod-ai-01 → 生产环境服务器

客户端B (Windows/macOS)
└── 同上

开发环境服务器 (SRV-dev-ai-01)
生产环境服务器 (SRV-prod-ai-01)


三、使用场景

用户信息

用户全名简写客户端系统
mayun may Windows 11
mahuateng maht Windows 11
masike mask macOS

目标服务器信息

服务器名称IP 地址用户名操作系统
SRV-dev-ai-01 172.19.1.113 jack Ubuntu 22.04 LTS
SRV-prod-ai-01 172.21.2.115 tony Ubuntu 22.04 LTS

四、SSH 免密登录基础

  • 私钥:存储在客户端本地,严禁泄露。
  • 公钥:存储在服务器的 ~/.ssh/authorized_keys 文件,用于认证客户端。
  • 登录流程:客户端持私钥连接服务器,服务器比对公钥后,免密认证通过。

五、客户端密钥生成(Windows/macOS)

Windows 用户(PowerShell)

ssh-keygen t rsa b 4096 C "may_dev-ai-01" f $env:USERPROFILE\\.ssh\\id_rsa_may_dev-ai-01
ssh-keygen t rsa b 4096 C "maht_prod-ai-01" f $env:USERPROFILE\\.ssh\\id_rsa_maht_prod-ai-01

macOS 用户(Terminal)

ssh-keygen -t rsa -b 4096 -C "mask_dev-ai-01" -f ~/.ssh/id_rsa_mask_dev-ai-01
ssh-keygen -t rsa -b 4096 -C "mask_prod-ai-01" -f ~/.ssh/id_rsa_mask_prod-ai-01

  • 注意:生成密钥时不设置密码(直接回车)。

六、设置密钥权限(安全必须)

Windows(PowerShell)

icacls $env:USERPROFILE\\.ssh\\id_rsa_* /inheritance:r
icacls $env:USERPROFILE\\.ssh\\id_rsa_* /grant:r "$env:USERNAME:r"

macOS(Terminal)

chmod 600 ~/.ssh/id_rsa_*


七、传输公钥到服务器(推荐)

Windows 用户

type $env:USERPROFILE\\.ssh\\id_rsa_may_dev-ai-01.pub | ssh jack@172.19.1.113 'mkdir -p ~/.ssh && tee -a ~/.ssh/authorized_keys && chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys'

macOS 用户

cat ~/.ssh/id_rsa_mask_dev-ai-01.pub | ssh jack@172.19.1.113 'mkdir -p ~/.ssh && tee -a ~/.ssh/authorized_keys && chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys'

首次需输入密码,确认服务器指纹。


八、配置 SSH 客户端(简化连接)

使用 tee 命令写入配置文件:

tee ~/.ssh/config <<EOF
Host srv-dev-ai-01
HostName 172.19.1.113
User jack
IdentityFile ~/.ssh/id_rsa_mask_dev-ai-01

Host srv-prod-ai-01
HostName 172.21.2.115
User tony
IdentityFile ~/.ssh/id_rsa_mask_prod-ai-01
ForwardAgent yes
EOF

  • Windows: 与第六节权限设置相同
  • macOS: chmod 600 ~/.ssh/config

九、服务器安全加固(必做)

服务器执行以下操作:

禁止密码登录

sudo nano /etc/ssh/sshd_config
# 修改
PasswordAuthentication no
PubkeyAuthentication yes
# 重启服务
sudo systemctl restart ssh

禁止Root登录

sudo nano /etc/ssh/sshd_config
# 修改
PermitRootLogin no
sudo systemctl restart ssh

防火墙设置

sudo ufw allow 22\\sudo ufw status


十、ForwardAgent 使用

  • 定义:允许本地 SSH Agent 通过服务器跳转认证,无需在服务器存储私钥。

常见使用场景

  • 跳板机访问内网服务器
  • 从服务器访问 Git 仓库

启动 SSH Agent 并加载密钥(客户端)

eval $(ssh-agent)
ssh-add ~/.ssh/id_rsa_mask_dev-ai-01


十一、VSCode Remote-SSH 配置

  • VSCode 扩展市场搜索并安装 Remote-SSH 插件。
  • 打开命令面板(Ctrl+Shift+P 或 Cmd+Shift+P),选择Remote-SSH: Connect to Host。
  • 根据 ~/.ssh/config 中的配置选择对应服务器。

  • 十二、常见问题排查

    • Permission denied (publickey)
      • 检查密钥路径和权限
      • 检查服务器 authorized_keys 文件权限
    • 仍需密码登录
      • 检查 SSH 配置文件:确保PubkeyAuthentication yes 和 PasswordAuthentication no

    附录:ForwardAgent 使用详细说明

    定义

    ForwardAgent yes 允许客户端 SSH Agent 将认证信息转发至远程服务器,避免将私钥复制到中转服务器,增强安全性。

    原理与类比

    • 私钥:身份证,本地保存。
    • SSH Agent:智能手环,远程服务器可通过此手环进行认证,不需持有身份证本身。

    使用场景

    • 跳板机场景:客户端 → 跳板机 → 内网服务器
    • Git 仓库访问:客户端 → 服务器 → Git 仓库

    客户端启用 SSH Agent

    eval $(ssh-agent)
    ssh-add ~/.ssh/id_rsa_mask_dev-ai-01

    安全建议

    • 仅在必要的跳转服务器启用 ForwardAgent
    • 设置 SSH Agent 有效期,例如:ssh-add -t 3600 ~/.ssh/id_rsa_mask_dev-ai-01
    赞(0)
    未经允许不得转载:网硕互联帮助中心 » 多用户通过 VS Code 远程 SSH 管理多台 Linux 服务器的最佳实践
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!