vscode远程调试linux代码

1、安装openssh

windows客户端、linux服务器端都需要安装openssh,一般情况linux服务器默认安装,windows除去新版的 win10,其他都需要单独安装

2、安装vscode插件

需要安装 C/C++、CMake Tools、Remote - SSH、Remote Developmentms(能打开服务器下某一文件夹)

3、vscode远程连接服务器配置

操作如下:

vscode远程调试linux代码_第1张图片

打开后界面如下:

vscode远程调试linux代码_第2张图片

 在此可以编辑远程连接配置

3.1、password方式认证

直接在config文件加:

Host 信息港-172.21.138.159    #名字
  HostName 172.21.138.159     #服务器IP
  User root     #登陆用户
  Port 22     #登陆端口
  PreferredAuthentications password     #认证方式默认为password,验证方式包括  password  publickey

PreferredAuthentications 默认是 password,当认证方式为password时,用户每次远程连接服务器时都需要在命令行处手动输入密码,如果使用 私钥文件 认证方式会简单些

例子:

Host 192.168.157.130
  HostName 192.168.157.130
  User root
  Port 22
  PreferredAuthentications password

3.2、使用密钥认证方式

3.2.1、生成密钥

使用ssh命令,在windows运行:

ssh-keygen -t rsa -b 4096 -f .ssh/id_rsa-remote-ssh         #会在 C:\Users\ArgenT\.ssh 目录下生成 id_rsa-remote-ssh 、id_rsa-remote-ssh.pub两个文件

id_rsa-remote-ssh文件存放的是私有密钥,id_rsa-remote-ssh.pub存放的是公有密钥(感觉此处跟git ssh认证方式很类似)

密钥形式登录的原理是:利用密钥生成器制作一对密钥——一只公钥和一只私钥。将公钥添加到服务器的某个账户上,然后在客户端利用私钥即可完成认证并登录。这样一来,没有私钥,任何人都无法通过 SSH 暴力破解你的密码来远程登录到系统。此外,如果将公钥复制到其他账户甚至主机,利用私钥也可以登录。按照当前实际搭建情况如下图所示:
(此处的参考文章:https://blog.csdn.net/u010417914/article/details/96918562)

vscode远程调试linux代码_第3张图片

3.2.2、将公钥放到服务器

所以接下来要做的就是将 公钥 放到服务器上(/登陆用户名/.ssh/authorized_keys文件,如果没有则创建authorized_keys文件):

#放入密钥
cd ~/.ssh
cat id_rsa-remote-ssh.pub >> authorized_keys
#修改权限,确保能够有权限
sudo chmod 600 authorized_keys
sudo chmod 700 ~/.ssh

同时确保服务器的SSH配置正确(默认下无需更改):

sudo vim /etc/ssh/sshd_config
确认下面两项:
RSAAuthentication yes
PubkeyAuthentication yes
#如果想将通过密码登陆SSH方式禁用掉,可以让配置文件(谨慎使用):
PasswordAuthentication no

3.2.3、vscode配置

在config文件加上:

Host 设备名称(不影响连接)
  HostName Linux的地址(域名或ip)
  Port 端口
  PreferredAuthentications publickey        #验证方式包括  password  publickey
  User 用户名
  IdentityFile C:\Users\ArgenT\.ssh\id_rsa-remote-ssh  #私钥文件全路径(指的是私钥文件所在windows的路径),如果上面选择了publickey,需要用这个指出私钥文件的全路径

PreferredAuthentications 默认是 password

例子:

Host 172.20.140.100
  HostName 172.20.192.234
  User root
  Port 18889
  PreferredAuthentications publickey
  IdentityFile C:\Users\ArgenT\.ssh\id_rsa-remote-ssh

4、调试脚本

vscode调试C++代码,必须要两个文件:tasks.json(规定了编译命令、编译参数)、launch.json(规定调试时的启动命令、运行参数),并且两个文件必须放在 .vscode 目录下, .vscode 目录放在代码工作目录的根目录下,有的 .vscode 下还有 setting.json ,这个不是必须的,起作用是该项目的 setting(项目的全局设置)

有两种方法导入tasks.json、launch.json 这两个脚本,一种是用别人的模板,另一种是用 vscode 系统给的模板,下面着重说第二种

4.1、task.json

按 ctrl+shift+P 输入 configure tasks,选择Create tasks.json file from templates,之后会看到一系列task模板,选择 cpp build file 或 g++ build file(区别只在于默认生成的启动命令不通),就生成了:

{
    "version": "2.0.0",
    "tasks": [
        {
            "type": "cppbuild",
            "label": "C/C++: cpp build active file",
            "command": "/usr/bin/cpp",    #编译命令需要改
            "args": [
                "-g",
                "${file}",
                "-o",
                "${fileDirname}/${fileBasenameNoExtension}"
            ],
            "options": {
                "cwd": "/usr/bin"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": "build",   #不能改,将其加入了编译中
            "detail": "compiler: /usr/bin/cpp"
        }
    ]
}

添加完 tasks.json 后就可以编译代码了,使用: CTRL + SHIFT + B 即可完成编译(但不运行),或者 CTRL + SHIFT + P 输入 build task

4.2、launch.json

在左侧找到 运行,点开后没有 launch.json 时会提示创建 launch.json :

{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(gdb) 启动",
            "type": "cppdbg",
            "request": "launch",
            "program": "输入程序名称,例如 ${workspaceFolder}/a.out",     #启动命令
            "args": [],      #启动参数
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "为 gdb 启用整齐打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ]
        }
    ]
}

在左侧找到 运行 会有调试,或者 F5 编译并调试

你可能感兴趣的:(Linux/server)