赞
踩
目前想要深入学习在Linux,也为了方便编写C/C++程序。Linux的环境里一般自带有c++的编译环境,如果没有安装gcc和g++等编译器也比较便利。但是在虚拟机里用vim编写C++程序又不得劲,因此打算使用vscode远程连接Linux虚拟机进行学习。
为了防止自己以后还要再配置,重复踩坑,因此写下这篇博客用做记录。
环境:windows11、VMware17、rocky linux9.1 ( 开源的CentOS9 )
进入官网下载,傻瓜式安装,注意一下软件安装位置即可。
安装完成后,打开vscode。在vscode的扩展(快捷键 Ctrl+Shift+X)里面分别搜索安装①Chinese(中文插件,如果有需要的话) ②Remote-ssh
打开虚拟机,在终端命令行上敲入:
- which sshd #查看有没有安装ssh服务
-
-
-
- # 若没有安装的话,需手动安装
-
- dnf install openssh-server # CentOS8 及其以上的环境
-
- yum install openssh-server # CentOS7 及其以下的环境
进行安装。其实在系统安装的时候,若勾选开发工具的话,就自动安装ssh和C++编译环境
- 确认服务器的ssh服务的运行状态:
- systemctl start sshd //开启ssh服务
-
- systemctl enable sshd // 设置ssh服务开机启动
-
- systemctl status sshd // 查看ssh服务当前的状态
如下图所示,即表示服务配置完成:
- 配置ssh的远程连接服务(选做)
- PermitRootLogin: 允许root用户登录
- PubkeyAuthentication:公钥身份验证,开启此项允许 vscode配置SSH秘钥登录
系统默认是允许以root用户来远程连接Linux虚拟器的,
但是如果发现明明自己sshd服务开着的,却还是连不上的,就需要配置ssh服务:
- vim /etc/ssh/sshd_config # 修改一下sshd服务的配置
-
-
-
- # 将文件内进行如下修改
-
- PermitRootLogin yes
-
- PubkeyAuthentication yes
-
- # 最后键入 :wq 保存退出
-
-
-
- systemctl restart sshd #重启sshd服务
- 记录linux虚拟器的IP地址:
- ip a # 查看IP地址
-
-
-
- ifconfig # 也可查看IP地址
第一步:进入设置界面,选择 应用 -> 可选功能
第二步:先看看下方的已安装功能里有没有OpenSSH客户端(必选)和OpenSSH服务端(可选),如果没有则点击右上角的查看功能,搜索OpenSSH客户端,然后下载并安装即可。
第三步:安装完成后,在下方的已安装功能里就有OpenSSH客户端了。
- vscode尝试登录linux虚拟器:
在配置文件内输入:
- Host rockylinux9.1 #随便起个名字
-
- HostName 192.168.xxx.xxx # 虚拟机的IP地址
-
- User root # 虚拟机的用户名,我这里用root
-
- ## 既然是自己一步步搭建的,没必要用普通用户来委屈自己
然后重新执行第一步操作,就会在弹窗里发现多了一个连接选项,接着我们点击那个连接选项,然后依次 选择Linux -> 输入密码
如果一切正常,没有弹窗警告,便成功用vscode连接上虚拟机了, 此时下方就是一个Shell窗口了。
我们可以使用vscode内的Shell窗口生成密钥
- ssh-keygen # 生成密钥和公钥, 然后一路默认回车
-
-
-
- # 直到出现以下内容表示密钥生成完毕
-
- The key's randomart image is:
- +---[RSA 3072]----+
- |o..+ . ..+. |
- |ooo + o.o |
- |E.o. oo.. |
- |++ *=oo+ |
- |+ooo**. S |
- | o =+*o |
- | ..O.= |
- | = o o |
- | .+ . |
- +----[SHA256]-----+
- # 进入 .ssh 文件夹内
- cd ~/.ssh
- # 查看文件夹下的内容有 id_rsa(私钥) id_rsa.pub(公钥)
- ls
- # 复制一份公钥的内容到authorized_keys中,ssh通过它进行密钥的验证
- cat id_rsa.pub >> authorized_keys
- # 设置文件权限
- chmod 600 authorized_keys
- chmod 700 ~/.ssh
- # 重启sshd服务
- systemctl restart sshd

随后,我们可以直接通过vscode远程连接虚拟机,打开文件夹,直接将生成的私钥id_rsa下载到主机中。
最后将下载的id_rsa文件,放在文件夹 C:/Users/***/.ssh 下,即可完成免密登录的最后一步。
用vscode连接上linux虚拟器后, 打开插件扩展, 安装C/C++和C/C++ Extension Pack插件。
注:以下操作:
1. 可以用命令行在vscode下方的Shell终端内操作,如下所示。
2. 也可以用鼠标在vscode内一步步操作
为了方便书写,不想截图了,就用命令行的方式来展现配置过程。
- mkdir Projects
-
-
-
- cd Projects
- mkdir .vscode
-
- cd .vscode
-
-
-
- # 第一个配置文件 c_cpp_properties.json
-
- vim c_cpp_properties.json
-
-
-
- # 输入以下内容:
-
- {
-
- "configurations": [
-
- {
-
- "name": "Linux",
-
- "includePath": [
-
- "${workspaceFolder}/**"
-
- ],
-
- "defines": [
-
- "_DEBUG",
-
- "UNICODE",
-
- "_UNICODE"
-
- ],
-
- "compilerPath": "/usr/bin/g++",
-
- "cStandard": "c17",
-
- "cppStandard": "gnu++17",
-
- "intelliSenseMode": "linux-gcc-x64"
-
- }
-
- ],
-
- "version": 4
-
- }

- # 第二个配置文件 tasks.json
-
- vim tasks.json
-
-
-
- # 输入以下内容:
-
- {
-
- "version": "2.0.0",
-
- "tasks": [
-
- {
-
- "type": "shell",
-
- "label": "g++ build active file",
-
- "command": "/usr/bin/g++",
-
- "args": [
-
- "-fdiagnostics-color=always",
-
- "-g",
-
- "${file}",
-
- "-o",
-
- "${fileDirname}/built/${fileBasenameNoExtension}"
-
- ],
-
- "options": {
-
- "cwd": "/usr/bin"
-
- },
-
- "problemMatcher": [
-
- "$gcc"
-
- ],
-
- "group": {
-
- "kind": "build",
-
- "isDefault": true
-
- },
-
- "detail": "编译器: /usr/bin/g++"
-
- }
-
- ]
-
- }

- # 第三个配置文件 launch.json
-
- vim launch.json
-
-
-
- # 输入以下内容:
-
- {
-
- // 使用 IntelliSense 了解相关属性。
-
- // 悬停以查看现有属性的描述。
-
- // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
-
-
-
- "version": "0.2.0",
-
- "configurations": [
-
- {
-
- "name": "g++ build and debug active file",
-
- "type": "cppdbg",
-
- "request": "launch",
-
- "program": "${fileDirname}/built/${fileBasenameNoExtension}",
-
- "args": [],
-
- "stopAtEntry": false,
-
- "cwd": "${workspaceFolder}",
-
- "environment": [],
-
- "externalConsole": false,
-
- "MIMode": "gdb",
-
- "setupCommands": [
-
- {
-
- "description": "Enable pretty-printing for gdb",
-
- "text": "-enable-pretty-printing",
-
- "ignoreFailures": true
-
- }
-
- ],
-
- "preLaunchTask": "g++ build active file",
-
- "miDebuggerPath": "/usr/bin/gdb"
-
- }
-
- ]
-
- }

- cd ~/Peojects
-
-
-
- # 创建工程test
-
- mkdir test
-
-
-
- cd test
-
-
-
- # 创建存放编译后二进制文件的文件夹
-
- mkdir built

在test工程内,新建一个test.cpp, 并在文件内写入以下内容:
- #include<iostream>
-
- using namespace std;
-
-
-
- int main(){
-
- cout << "Hello world!" << endl;
-
- return 0;
-
- }
然后 按下快捷键"Ctrl + Shift + B" 就可以编译test.cpp文件了,编译的结果为test 存在在built文件夹内。
在shell终端内输入:
- # 到工程的built目录下
- cd ~/Projects/test/built/
-
- # 运行生成的二进制文件,在linux中不需要exe后缀
- ./test
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。