Jetbrains远程开发配置-Webstrom

发布于 2025年07月13日

Windows通过WebStorm+SSH密钥登录Ubuntu虚拟机

场景

由于代码同步繁琐,且Windows系统中部分开发环境安装复杂,因此选择在Ubuntu虚拟机中进行代码开发。相较于密码登录,SSH密钥登录不仅稳定性更高,还能大幅提升远程连接的安全性,避免密码泄露或暴力破解风险。

准备材料

  • 开发工具:WebStorm
  • 服务器环境:Ubuntu虚拟机(建议20.04 LTS及以上版本)

一、创建SSH密钥并配置公钥认证

1. 生成带密码保护的SSH密钥(核心安全步骤)

在Ubuntu虚拟机的终端中执行以下命令,全程使用普通用户(如ubuntu)操作,禁止用root用户生成密钥

# 生成ED25519算法密钥(轻量安全,推荐),备注信息便于识别
ssh-keygen -t ed25519 -C "ubuntu@vm-dev-20251208"

执行后会出现系列提示,关键步骤如下:

  • Enter file in which to save the key:默认保存路径/home/ubuntu/.ssh/id_ed25519,直接回车即可;
  • Enter passphrase (empty for no passphrase)必须设置强密码短语(至少12位,包含大小写字母、数字、特殊字符),这是私钥的第二层保护;
  • Enter same passphrase again:重复输入上述密码,确认无误后完成生成。

成功生成的示例输出:

ubuntu@ubuntu:~$ ssh-keygen -t ed25519 -C "ubuntu@vm-dev-20251208"
Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/ubuntu/.ssh/id_ed25519): 
Enter passphrase (empty for no passphrase):  # 输入强密码(如Xy@2025DevVm)
Enter same passphrase again:  # 重复密码
Your identification has been saved in /home/ubuntu/.ssh/id_ed25519
Your public key has been saved in /home/ubuntu/.ssh/id_ed25519.pub
The key fingerprint is:
SHA256:3AlCJnXLdcCJfpUnqCTM8TiFkl+IComL1k01f9lMEc4 ubuntu@vm-dev-20251208
The key's randomart image is:
+--[ED25519 256]--+
|..  .***ooo+.=o  |
|+   +=***o+.@ .  |
|.o..oo+==o + E   |
|o... ..+ooo.     |
|.       S.o      |
|                 |
|                 |
|                 |
|                 |
+----[SHA256]-----+

密钥文件说明:

  • 私钥(需严格保密):/home/ubuntu/.ssh/id_ed25519
  • 公钥(可公开传输):/home/ubuntu/.ssh/id_ed25519.pub

2. 配置公钥认证(关键权限设置)

将公钥写入认证文件,让服务器信任该密钥:

# 将公钥内容追加到authorized_keys文件
cat ~/.ssh/id_ed25519.pub >> ~/.ssh/authorized_keys

设置正确的权限(否则SSH服务会拒绝读取,导致登录失败):

# 确保.ssh目录和文件归属当前用户
chown -R ubuntu:ubuntu ~/.ssh
# .ssh目录仅当前用户可读写执行
chmod 700 ~/.ssh
# 认证文件仅当前用户可读写
chmod 600 ~/.ssh/authorized_keys

二、修改SSH服务配置(一次性完成安全优化)

编辑SSH主配置文件,启用安全配置项,仅需编辑一次,避免重复操作

# 用sudo权限编辑配置文件(普通用户无修改权限)
sudo vim /etc/ssh/sshd_config

关键配置修改规则

  • 先搜索文件中是否已有对应配置项(按/关键词搜索,如/PasswordAuthentication);
  • 若存在则修改原有值,若不存在则在文件末尾添加;
  • 注释(#开头)的配置项需删除#解锁。

必选安全配置(替换/添加以下内容)

# 基础安全控制
PermitRootLogin no          # 禁用root用户远程登录(高危操作)
PubkeyAuthentication yes    # 启用公钥认证(核心功能)
PasswordAuthentication no   # 禁用密码登录(杜绝暴力破解)
PermitEmptyPasswords no     # 禁用空密码登录(兜底防护)

# 会话安全控制
ClientAliveInterval 300     # 闲置5分钟(300秒)发送心跳包
ClientAliveCountMax 3       # 3次心跳无响应则断开会话(防止闲置会话被利用)
MaxStartups 10:30:100       # 限制单IP并发连接(前10个直接允许,30个延迟,最多100个)
UseDNS no                   # 禁用DNS反向解析(加速登录+防止DNS劫持)

# 非必需功能禁用(减少攻击面)
GSSAPIAuthentication no     # 禁用GSSAPI认证(非Windows域环境无需启用)
X11Forwarding no            # 禁用图形界面转发(开发场景无需使用)

# 可选配置(根据需求启用)
# AllowUsers ubuntu  # 仅允许ubuntu用户登录(替换为你的实际用户名,多个用户用空格分隔)

配置验证与服务重启(防止锁死服务器)

修改后必须先验证配置语法,无报错再重启服务:

# 验证配置文件语法是否正确(无输出则为正常)
sudo sshd -t
# 重启SSH服务使配置生效
sudo systemctl restart ssh

三、处理cloud-init配置(Ubuntu Server版本必填)

Ubuntu Server版本会通过cloud-init覆盖SSH配置,需同步修改:

# 编辑cloud-init的SSH配置文件
sudo vim /etc/ssh/sshd_config.d/50-cloud-init.conf

将文件中的 PasswordAuthentication yes 改为 no,确保与主配置一致:

PasswordAuthentication no

再次验证语法并重启服务:

sudo sshd -t  # 验证配置无错误
sudo systemctl restart ssh  # 重启服务

四、安全下载并存储私钥(Windows端关键操作)

1. 下载私钥

从Ubuntu虚拟机中获取私钥文件,路径为:/home/ubuntu/.ssh/id_ed25519
请保存到你本机的某个目录,保存好

六、最终验证(防止锁死服务器,关键步骤)

必须保留当前SSH会话(不要关闭),打开新的终端/工具进行验证:

验证1:密钥登录是否正常

  • 用WebStorm连接,确认能成功登录并访问文件;

验证2:密码登录是否已禁用

  • 用其他工具尝试密码登录(如ssh ubuntu@虚拟机IP);
  • 若提示Permission denied (publickey).则说明密码登录已禁用,验证通过。

应急处理

  • 若密钥登录失败:立即回到原会话,修改sshd_config,将PasswordAuthentication改为yes,重启SSH服务(sudo systemctl restart ssh),排查权限或配置问题;
  • 若无法通过SSH连接:通过虚拟机控制台登录,修改配置后重试。


评论