Vscode远程免密连接Linux虚拟机,并配置C/C++运行环境

 前言

目前想要深入学习在Linux,也为了方便编写C/C++程序。Linux的环境里一般自带有c++的编译环境,如果没有安装gcc和g++等编译器也比较便利。但是在虚拟机里用vim编写C++程序又不得劲,因此打算使用vscode远程连接Linux虚拟机进行学习。

为了防止自己以后还要再配置,重复踩坑,因此写下这篇博客用做记录。

环境:windows11、VMware17、rocky linux9.1 ( 开源的CentOS9 )

一、 安装vscode

1. 下载安装vs code

进入官网下载,傻瓜式安装,注意一下软件安装位置即可。

2. 安装vs code 插件

安装完成后,打开vscode。在vscode的扩展(快捷键 Ctrl+Shift+X)里面分别搜索安装①Chinese(中文插件,如果有需要的话) ②Remote-ssh

Vscode远程免密连接Linux虚拟机,并配置C/C++运行环境_第1张图片

 

二、配置虚拟机远程连接的ssh服务

- 确保虚拟机的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服务当前的状态

如下图所示,即表示服务配置完成:

Vscode远程免密连接Linux虚拟机,并配置C/C++运行环境_第2张图片

- 配置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服务

Vscode远程免密连接Linux虚拟机,并配置C/C++运行环境_第3张图片

- 记录linux虚拟器的IP地址:

ip a  # 查看IP地址



ifconfig  # 也可查看IP地址

三、 实现vscode远程免密登录

- windows11配置ssh服务的客户端

第一步:进入设置界面,选择 应用 -> 可选功能

Vscode远程免密连接Linux虚拟机,并配置C/C++运行环境_第4张图片

第二步:先看看下方的已安装功能里有没有OpenSSH客户端(必选)和OpenSSH服务端(可选),如果没有则点击右上角的查看功能,搜索OpenSSH客户端,然后下载并安装即可。

Vscode远程免密连接Linux虚拟机,并配置C/C++运行环境_第5张图片

第三步:安装完成后,在下方的已安装功能里就有OpenSSH客户端了。

Vscode远程免密连接Linux虚拟机,并配置C/C++运行环境_第6张图片

- vscode尝试登录linux虚拟器:

Vscode远程免密连接Linux虚拟机,并配置C/C++运行环境_第7张图片

 Vscode远程免密连接Linux虚拟机,并配置C/C++运行环境_第8张图片

 Vscode远程免密连接Linux虚拟机,并配置C/C++运行环境_第9张图片

在配置文件内输入:

Host rockylinux9.1         #随便起个名字

  HostName 192.168.xxx.xxx   # 虚拟机的IP地址

  User root                # 虚拟机的用户名,我这里用root

## 既然是自己一步步搭建的,没必要用普通用户来委屈自己

然后重新执行第一步操作,就会在弹窗里发现多了一个连接选项,接着我们点击那个连接选项,然后依次 选择Linux -> 输入密码

如果一切正常,没有弹窗警告,便成功用vscode连接上虚拟机了, 此时下方就是一个Shell窗口了。

Vscode远程免密连接Linux虚拟机,并配置C/C++运行环境_第10张图片

- 免密连接虚拟机

我们可以使用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下载到主机中。

Vscode远程免密连接Linux虚拟机,并配置C/C++运行环境_第11张图片

 最后将下载的id_rsa文件,放在文件夹 C:/Users/***/.ssh 下,即可完成免密登录的最后一步。

Vscode远程免密连接Linux虚拟机,并配置C/C++运行环境_第12张图片

 四、 C++编译环境搭建

1. vscode安装插件

用vscode连接上linux虚拟器后, 打开插件扩展, 安装C/C++和C/C++ Extension Pack插件。

2. 配置C++运行的项目环境

注:以下操作:

1. 可以用命令行在vscode下方的Shell终端内操作,如下所示。

2. 也可以用鼠标在vscode内一步步操作

为了方便书写,不想截图了,就用命令行的方式来展现配置过程。

1-新建Projects文件夹,作为以后新建工程的主目录

mkdir Projects



cd Projects

2- 在.vscode文件夹下,写三个配置文件

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"

          }

    ]

}

3. 创建一个test工程

1- 创建项目的目录:

cd ~/Peojects



# 创建工程test

mkdir test



cd test



# 创建存放编译后二进制文件的文件夹

mkdir built

2- 运行项目工程

在test工程内,新建一个test.cpp, 并在文件内写入以下内容:

#include

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

你可能感兴趣的:(CentOS学习,linux,c++,centos,学习)