VSCode连接远程Linux服务器进行开发

1. 环境

  • 1.52.1 (user setup)
  • Win10
  • 远程 linux 服务器

2. 安装 VSCode

推荐下载 64bit User Installer,当然其它也可以。

3. 安装 VSCode 插件 Remote - SSH

这个插件是连接远程服务器开发的核心插件,必须有。

4. 生成秘钥并配置

4.1. 生成秘钥

Win 图标 > 右单机 > Windows PowerShell (管理员)(A) > 输入:ssh-keygen.exe -t rsa > 一路狂按 Enter > 复制生成的 id_rsa 路径到记事本备用(路劲格式为:C:\Users\xxxx/.ssh/id_rsa,对你没看错,既有正斜杠又有反斜杠,不要怀疑) > 记事本打开生成的 id_rsa.pub 文件等待后续使用。

笔者这里已经生成过 id_rsa 了,所以显示的信息不一样。如果你以前生成过 id_rsa 了,那么就不用再次生成了。这个 id_rsa 在本机 VSCode 连接远程服务器时认证使用。

4.2. 配置 VSCode 和远程服务器的认证秘钥

1、安装完 Remote - SSH 后,VSCode 左侧栏会有 "远程资源管理器" 图标,如果没有就右单机打开。

2、打开 Remote -SSH 配置文件:

配置完毕之后,"远程资源管理器" 中会显示你已经配置的服务器:

3、打开远程 Linux 服务器添加认证秘钥:

把刚才打开的 id_rea.pub 里边的内容追加到 authorized_keys 里边:

5. 在 VSCode 中打开远程服务器

在 "远程资源管理器" 选择一个服务器进行连接:

  • 初次连接会提示你选择远程服务器平台,这里我们例子中的服务器都是 Linux,选 Linux 就 OK。
  • 初次连接可能会有一些其它提示框,看着选就可以了。
  • 初次连接会在远程 Linux 服务器上下载 vscode server,本机的 VSCode 和远程 Linux 服务器正是通过 vscode server 进行交互的,所以这个 vscode server 是必须有的。但是对公司环境来说,vscode server 可能会自动下载安装失败,此时就需要手动在服务器端安装 vscode server,离线安装教程参看:《离线安装VSCode Server》。
  • 安装好的 vscoder server 在远程 Linux 服务器的 ~/.vscode-server 目录下。
  • 如果换了环境,又懒得重新安装 vscode server 和插件,那么我们只需打包 .vscode-server 文件,然后拷贝到另一台服务器解压到用户根目录下就 OK 了。
  • 需要一个特别注意的问题:服务器的 vscode server 和本机的 VSCode 版本需要对应,若本机的 VSCode 更新了,那么你就连不上了,需要更新服务器的 vscode server

正确连接之后,VSCode 左下角会显示服务器信息:

6. 搭建开发环境

上述只是让你连接到了远程服务器进行开发,而在服务上编写 C++ 代码还需要在服务器上搭建一套 C++ 开发环境,这样才能自动补全,语法分析。编写 Python,Rust,Shell 类似。

环境搭建教程参看:

上述方法是在本地 WSL Linux/Win10 上搭建环境,但同样适用于服务器 Linux。只不过需要把对应的插件安装在服务器上(因为我们的代码是在服务器上,因此用于分析的插件当然也要运行在服务器上,本机 VSCode 通过 ssh 协议获取数据仅做界面展示)。但公司的办公环境,服务器一般是没有网络的,就无法在线安装插件,怎么办?

1、从插件官网下载 .visx 格式的插件安装包(不再介绍方法,网上搜索),然后上传到服务器上,再通过 VSCode 安装。

2、在本机安装好插件,然后把插件打包上传到服务器对应目录。本机目录:~/.vscode/extensions/,服务器目录:~/.vscode-server/extensions/。但是注意,本机打包的时候要排除两个文件:extensions.json 和 .init-default-profile-extensions

这里直接给一个脚本,用于打包本地 Linux 的扩展包,然后自动上传到远端 Linux 服务器上,根据实际情况修改你服务器的 IP:

#!/bin/bash
# 版本:0.1.0
# 描述:打包本机VSCode扩展,上传到服务器个人目录下,更新服务器上的VSCode扩展。

set -x

# 打包本机扩展
cd ~/.vscode
rm -rf extensions.tar.gz
tar czf extensions.tar.gz --exclude="extensions.json" --exclude=".init-default-profile-extensions" --exclude=".obsolete" extensions

# 修改user_ip_list配置要上传的服务器列表
user_ip_list=("zhangdongyu@10.xx.xx.230" "zhangdongyu@10.xx.xx.136")
for ((i = 0; i < ${#user_ip_list[@]}; i++)); do
    # 上传到远端并解压
    ssh ${user_ip_list[i]} "rm -rf ~/.vscode-server/extensions.tar.gz"
    scp ~/.vscode/extensions.tar.gz ${user_ip_list[i]}:~/.vscode-server
    ssh ${user_ip_list[i]} "cd ~/.vscode-server; rm -rf extensions; tar xf extensions.tar.gz; rm -rf extensions.tar.gz"
done

# 删除本机的extensions.tar.gz
rm -rf extensions.tar.gz

8. 远程开发常见问题汇总

8.1. Win 下 VSCode Remote SSH 远程开发频繁掉线

问题原因:

Win 自带的 ssh 软件和 VSCode 不兼容会导致频繁掉线,卡顿,重连。

解决方案:

更新 Win 的 ssh 软件。可下载 git 软件并安装,git 中带有 ssh.exe,用这个就行了。

操作步骤:

1、官网下载 git 的 Windows 版本;

2、用默认配置安装;

3、在 git 安装目录中找到 ssh.exe 路径,默认路径是:C:\Program Files\Git\usr\bin\ssh.exe

4、打开 VSCode > 打开 Remote SSH 插件设置 > 找到 Remote.SSH.Path 配置项 > 在里边填写 ssh.exe 的完整路径;

5、重新用 VSCode 连接远程服务器开发,就不会再掉线了。

8.2. Remote-SSH 连接服务器出错

● Failed to set up socket for dynamic port forward to remote port xxxx: Proxy connection timed out. Is the remote port correct?

● Checking server status on port xxx with wget

解决方案 1:

1、编辑服务端的 sshd_config 配置文件:vim /etc/ssh/sshd_config

2、修改 AllowTcpForwarding 配置。这个配置默认是注释掉的:#AllowTcpForwarding yes,即默认是允许 TCP 转发的。除非显式指定了 AllowTcpForwarding no,这样就禁止了 TCP 转发。有些服务器为了安全,禁止了 TCP 转发,恢复成默认样子即可。

3、如果这样还是无法连接服务器,那么打开 Remote-SSH 插件的配置,禁用 remote.SSH.enableDynamicForwarding 选项。

解决方案 2:

1、VSCode 每次连接远程的时候会通过 wget 校验服务联通性,若没有 wget 则会用 crul 校验,若两个命令都没有,则直接连接失败。

2、既然出现 Checking server status on port xxx with wget 这种错误,那我们直接屏蔽系统 wget,用脚本写一个假的 wget,让其始终 exit 0,这样就可以绕过校验。

解决方案 3:

重启 iptables 服务:systemctl restart iptables

这三种解决方案只是摸索出来的,请组合交替使用。

8.3. VSCode 远程连接服务器:远程主机密钥已更改,端口转发已禁用

触发情形:之前用本机远程连接过该服务器,但服务器的密码之后更改过。

解决方法:删除 ~/.ssh/known_hosts 文件,然后重新连接服务器,按照 vscode 的提示依次进行即可。

8.4. 远程使用好好的环境,突然连接不上,看日志提示 wget/curl 正在下载依赖

解决方法:删除服务器端 .vscode-server 的 bin 和 extensions 目录,重新部署服务端即可。

智能网联汽车的安全员高级考试涉及多个方面的专业知识,包括但不限于自动驾驶技术原理、车辆传感器融合、网络安全防护以及法律法规等内容。以下是针对该主题的一些核心知识点解析: ### 关于智能网联车安全员高级考试的核心内容 #### 1. 自动驾驶分级标准 国际自动机工程师学会(SAE International)定义了六个级别的自动驾驶等级,从L0到L5[^1]。其中,L3及以上级别需要安全员具备更高的应急处理能力。 #### 2. 车辆感知系统的组成与功能 智能网联车通常配备多种传感器,如激光雷达、毫米波雷达、摄像头和超声波传感器等。这些设备协同工作以实现环境感知、障碍物检测等功能[^2]。 #### 3. 数据通信与网络安全 智能网联车依赖V2X(Vehicle-to-Everything)技术进行数据交换,在此过程中需防范潜在的网络攻击风险,例如中间人攻击或恶意软件入侵[^3]。 #### 4. 法律法规要求 不同国家和地区对于无人驾驶测试及运营有着严格的规定,考生应熟悉当地交通法典中有关自动化驾驶部分的具体条款[^4]。 ```python # 示例代码:模拟简单决策逻辑 def decide_action(sensor_data): if sensor_data['obstacle'] and not sensor_data['emergency']: return 'slow_down' elif sensor_data['pedestrian_crossing']: return 'stop_and_yield' else: return 'continue_driving' example_input = {'obstacle': True, 'emergency': False, 'pedestrian_crossing': False} action = decide_action(example_input) print(f"Action to take: {action}") ``` 需要注意的是,“橙点同学”作为特定平台上的学习资源名称,并不提供官方认证的标准答案集;建议通过正规渠道获取教材并参加培训课程来准备此类资格认证考试。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值