VSCode 远程 SSH 连接 CentOS 7 虚拟机:EDA 开发者专属指南

在 EDA 开发中,CentOS 7 因其稳定的环境常被用作虚拟机系统运行 VCS、Verdi 等工具,但虚拟机内编辑代码效率较低。通过 VSCode 远程 SSH 连接,可直接在本地操作虚拟机文件、运行 EDA 命令,兼顾图形化编辑体验与 Linux 开发环境。本文结合实际操作场景,从环境准备到问题排查,完整记录连接全流程。

一、前置认知:核心需求与环境说明

1.1 适用场景

  • 虚拟机系统:CentOS 7(用户:five,核心用途:运行 VCS、Verdi 等 EDA 工具)

  • 本地环境:Windows/Mac/Linux(安装 VSCode,需与虚拟机在同一局域网)

  • 核心目标:远程编辑 EDA 项目代码(如 UVM 测试台)、修改环境变量(.bashrc)、执行 VCS 编译命令

1.2 关键前提

虚拟机已联网,本地主机可与虚拟机互通(通过 ping 测试验证);虚拟机已安装 VCS 等 EDA 工具(本文不涉及工具安装,聚焦连接配置)。

二、虚拟机端(CentOS 7):SSH 环境配置(必做)

VSCode 远程连接的核心是虚拟机的 SSH 服务,需完成「安装服务→开放端口→确认IP」三步,全部操作在虚拟机终端执行。

2.1 安装并启动 SSH 服务

CentOS 7 默认未预装 SSH 服务,通过 yum 快速安装:

1. 安装 openssh-server(需 root 权限,非 root 加 sudo)

sudo yum install -y openssh-server

2. 启动 SSH 服务并设置开机自启(避免重启后需重新启动)

sudo systemctl start sshd
sudo systemctl enable sshd

3. 验证服务状态(输出 active (running) 即为正常)

sudo systemctl status sshd

2.2 开放 SSH 端口(防火墙配置)

CentOS 7 防火墙默认拦截 SSH 默认端口 22,需手动开放:

1. 开放 22 端口,设置永久生效

sudo firewall-cmd --add-port=22/tcp --permanent

2. 重新加载防火墙规则(立即生效)

sudo firewall-cmd --reload

3. 验证端口是否开放(输出 yes 即为成功)

sudo firewall-cmd --query-port=22/tcp

2.3 关闭 SELinux(避坑关键)

CentOS 7 自带的 SELinux 可能干扰 SSH 密钥认证,临时关闭用于测试(不影响系统稳定性):

临时关闭(重启虚拟机后失效,适合测试)

sudo setenforce 0

若需永久关闭(可选):编辑配置文件

sudo vim /etc/selinux/config

将 SELINUX=enforcing 改为 SELINUX=disabled,保存后重启虚拟机

2.4 查询虚拟机 IP(连接核心参数)

SSH 连接需虚拟机的 IPv4 地址,执行以下命令获取:

方法 1:精准过滤有效 IP(推荐,排除本地回环和 IPv6)

ip addr | grep inet | grep -v 127.0.0.1 | awk ‘{print $2}’ | cut -d/ -f1

方法 2:快速输出所有 IP(需自行筛选)

hostname -I

以实际输出为例:

执行结果

::1
192.168.66.25 # 有效 IP,优先选择
fe80::faac:ccf9:dd39:1575
192.168.122.1 # 虚拟网卡 IP,本地不可访问

关键筛选规则:排除 IPv6(以 :: 开头)和虚拟网卡 IP(如 192.168.122.x),选择与本地主机同网段的 IP(如 192.168.66.25),记录该 IP 备用。

三、本地端(VSCode):远程连接配置

本地需完成 VSCode 安装、Remote-SSH 扩展配置,核心是将虚拟机 IP、用户名等信息录入 SSH 配置文件。

3.1 安装 VSCode 与 Remote-SSH 扩展

  1. 下载 VSCode:从 VSCode 官网 下载对应系统版本(Windows/Mac/Linux 通用),默认安装即可;

  2. 安装 Remote-SSH 扩展:打开 VSCode → 左侧「扩展」图标(📦)→ 搜索「Remote-SSH」→ 点击「安装」→ 重启 VSCode 使扩展生效。

安装完成后,VSCode 左下角会出现远程连接图标(<>)。

3.2 配置 SSH 连接(推荐长期使用方案)

通过配置文件保存连接信息,后续无需重复输入 IP,步骤如下:

  1. 打开命令面板:按下快捷键 Ctrl+Shift+P(Windows/Linux)或 Cmd+Shift+P(Mac),输入「Remote-SSH: Open Configuration File」并回车;

  2. 选择配置文件路径:首次操作会提示选择路径,选择「~/.ssh/config」(本地主机的 SSH 配置文件);

  3. 录入连接信息:在文件末尾粘贴以下内容,替换 IP 和用户名为实际信息:
    Host centos7-eda # 自定义连接别名(如 centos7-eda,便于识别)
    HostName 192.168.66.25 # 替换为虚拟机的有效 IP
    User five # 替换为 CentOS 7 的登录用户名(本文为 five)
    Port 22 # SSH 默认端口,无需修改

  4. 保存文件:按下 Ctrl+S 保存配置,配置立即生效。

3.3 建立远程连接(首次连接流程)

  1. 触发连接:按下 Ctrl+Shift+P,输入「Remote-SSH: Connect to Host…」并回车,在弹出的列表中选择自定义别名「centos7-eda」;

  2. 选择系统类型:首次连接会提示「Select the platform of the remote host」,选择「Linux」;

  3. 身份认证:
    密码认证:输入 CentOS 7 中 five 用户的登录密码,按回车;

  4. 密钥认证(推荐,后续免密):下文单独说明,首次可先用密码认证测试。

  5. 等待连接:VSCode 会自动在虚拟机上安装「vscode-server」(无需手动操作),安装完成后左下角会显示「SSH: centos7-eda」,表示连接成功。

四、优化体验:配置 SSH 密钥认证(免密登录)

密码认证每次连接需输入密码,配置密钥认证后可实现免密登录,步骤如下(本地终端执行):

4.1 本地主机生成密钥对

生成 RSA 密钥对(全程按回车,不要设置密码,否则仍需输入密钥密码)

ssh-keygen -t rsa -b 4096

生成后,密钥文件默认存储在 ~/.ssh/ 目录(Windows 为 C:\Users\你的用户名.ssh\),核心文件为:

  • id_rsa:私钥,本地保存,不可泄露;

  • id_rsa.pub:公钥,需复制到虚拟机。

4.2 复制公钥到 CentOS 7 虚拟机

通过 ssh-copy-id 命令快速复制公钥(需输入一次虚拟机密码):

替换为虚拟机的 IP 和用户名

ssh-copy-id five@192.168.66.25

手动复制备用方案(若 ssh-copy-id 不可用):

1. 本地终端打印公钥内容并复制

cat ~/.ssh/id_rsa.pub

2. 登录虚拟机,将公钥内容粘贴到 authorized_keys 文件

sudo vim ~/.ssh/authorized_keys

粘贴后保存退出

3. 配置文件权限(CentOS 7 权限严格,必须执行)

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

4.3 验证免密连接

重新在 VSCode 中选择「centos7-eda」连接,无需输入密码,直接进入远程环境,配置生效。

五、连接成功后:EDA 开发场景实战

连接成功后,VSCode 与虚拟机环境完全联动,可直接开展 EDA 开发相关操作,核心场景如下:

5.1 远程编辑 EDA 项目代码

  1. 打开远程文件夹:左侧「资源管理器」→ 点击「打开文件夹」→ 选择虚拟机上的 EDA 项目目录(如 ~/rdma-rc-uvm-verification/rtl);

  2. 编辑代码:双击打开 testbench.sv、.vimrc 等文件,VSCode 支持语法高亮、自动补全,编辑体验与本地一致;

  3. 保存同步:修改后按下 Ctrl+S 直接保存到虚拟机,无需手动传输文件。

5.2 远程执行 EDA 命令

打开远程终端:按下 Ctrl+`(反引号)调出终端,直接执行 CentOS 7 命令:

1. 验证 VCS 环境

vcs -v # 输出版本信息,确认环境正常

2. 编译 UVM 测试台

vcs -full64 -debug_pp testbench.sv -R

3. 修改环境变量后生效

source ~/.bashrc

4. 启动 Verdi 可视化工具

verdi

5.3 安装 EDA 相关 VSCode 扩展

在远程环境中安装扩展,提升开发效率:

  • SystemVerilog:支持 SV 语法高亮、 lint 检查;

  • Remote - SSH: Editing Configuration Files:快速编辑 SSH 配置;

  • Terminal:增强远程终端功能。

六、常见问题排查(CentOS 7 专属避坑)

问题现象

核心原因

解决方案

连接超时,提示「Connection timed out」

IP 错误/网络不通/SSH 服务未启动

  1. 重新确认虚拟机 IP;2. 本地 ping 虚拟机 IP(如 ping 192.168.66.25);3. 重启 SSH 服务(sudo systemctl restart sshd)

密码正确但提示「Permission denied」

.ssh 目录权限错误/SELinux 干扰

  1. 修复权限(chmod 700 ~/.ssh; chmod 600 ~/.ssh/authorized_keys);2. 关闭 SELinux(sudo setenforce 0)

vscode-server 安装失败

旧版本残留/网络问题

  1. 删除虚拟机上的残留目录(rm -rf ~/.vscode-server);2. 重新连接,等待自动安装

远程终端无法执行 VCS 命令

环境变量未加载

执行 source ~/.bashrc 加载环境变量,或重启 VSCode 终端

七、总结:核心流程与优化建议

7.1 连接核心三步

  1. 虚拟机端:装 SSH 服务 → 开 22 端口 → 记有效 IP;

  2. VSCode 端:装 Remote-SSH → 配 SSH 配置(IP+用户名);

  3. 认证登录:密码/密钥认证 → 连接成功,远程开发。

7.2 优化建议

  • 固定虚拟机 IP:在路由器或虚拟机网络设置中绑定 IP,避免每次连接需重新查询;

  • 启用密钥认证:免密登录提升效率,且比密码更安全;

  • 安装 VSCode 扩展:根据 EDA 开发需求安装语法、调试类扩展,提升编辑体验。

通过 VSCode 远程 SSH 连接 CentOS 7 虚拟机,彻底解决了 EDA 开发中「虚拟机编辑不便」与「本地环境不兼容」的矛盾,实现了图形化编辑与 Linux 工具链的完美结合,大幅提升开发效率。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐