ssh连接虚拟机出错

    今天使用SecureCRT连接虚拟机的时候忽然报如下错误无法连接,大概意思就是证书在有效期之外,顿时很懵,昨天连接还好好的,今天怎么就出错了?然后按照报错去网上查资料,结果没查到什么有用的资料,删掉这连接重新建立还是不行;直接在虚拟机上登录没有问题,仔细想了想,昨天学习linux系统关于sshd服务的时候改了些配置,会不会是这些问题呢?于是找到昨天的学习资料,将更改的地方改回来,果然可以连接了。

 

 需要更改的配置如下:

进入ssh的配置文件中:

 更改以下配置:

    允许密码认证:

    打开公钥模式:

    配置公钥文件:

更改完毕后,wq 保存,最后重启sshd服务   systemctl restart sshd

然后就可以连接了

<think>我们正在解决的是:在VSCode中通过SSH连接虚拟机后调试C文件的方法。参考之前的引用,我们已经知道如何配置SSH连接(引用[2]和引用[3]),现在需要配置调试环境。步骤:1.确保SSH连接已经建立(按照之前的步骤配置好SSH服务,并在VSCode中通过Remote-SSH插件连接成功)。2.在远程虚拟机中安装必要的编译和调试工具(如gcc,gdb)。3.在VSCode中安装C/C++扩展(如果尚未安装,注意:需要在远程环境下安装)。4.配置调试环境(创建launch.json和tasks.json)。具体步骤:###1.建立SSH连接(已配置则跳过)-在虚拟机中安装并启动SSH服务(引用[2])。-在VSCode中安装Remote-SSH插件(引用[3]),并连接虚拟机。###2.安装编译调试工具(在远程虚拟机中执行)```bashsudoaptupdatesudoaptinstallgccgdbmake```###3.安装C/C++扩展-在VSCode中,打开扩展市场(Ctrl+Shift+X),搜索"C/C++"扩展(由Microsoft提供),并安装。-注意:由于我们是通过SSH远程连接,扩展需要在远程环境中安装。安装时VSCode会提示在远程环境中安装,确认即可。###4.配置调试环境-在远程虚拟机中创建一个工作目录,并打开该目录(通过VSCode的远程资源管理器)。-创建一个简单的C文件(例如`main.c`)用于测试。-按F5或点击“运行”->“启动调试”,VSCode会提示选择环境,选择“C/C++:(gdb)启动”。-此时VSCode会自动生成`launch.json`(调试配置文件)和`tasks.json`(构建任务配置文件)。**如果未自动生成,可以手动创建:**-创建`.vscode`文件夹在项目根目录下。-在`.vscode`文件夹下创建`launch.json`和`tasks.json`。**示例`tasks.json`(用于编译C程序):**```json{"version":"2.0.0","tasks":[{"label":"build","type":"shell","command":"gcc","args":["-g","${file}","-o","${fileDirname}/${fileBasenameNoExtension}"],"group":{"kind":"build","isDefault":true}}]}```**示例`launch.json`(用于启动调试):**```json{"version":"0.2.0","configurations":[{"name":"gdbLaunch","type":"cppdbg","request":"launch","program":"${fileDirname}/${fileBasenameNoExtension}","args":[],"stopAtEntry":false,"cwd":"${fileDirname}","environment":[],"externalConsole":false,"MIMode":"gdb","setupCommands":[{"description":"为gdb启用整齐打印","text":"-enable-pretty-printing","ignoreFailures":true}],"preLaunchTask":"build"}]}```**注意**:`preLaunchTask`的值`"build"`必须与`tasks.json`中的`label`值一致。###5.开始调试-打开要调试的C文件(例如`main.c`)。-按F5启动调试,VSCode会先执行编译任务(由`tasks.json`定义),然后启动调试。-可以在代码中设置断点,查看变量值,使用调试控制台等。###6.验证-如果一切正常,程序将在断点处暂停,可以逐步执行。如果遇到问题:-检查编译和调试工具是否安装:在远程虚拟机的终端中运行`gcc--version`和`gdb--version`。-检查VSCode的C/C++扩展是否安装在远程环境(在扩展管理器中,查看C/C++扩展,会显示“已安装在SSH:xxx”)。-检查`launch.json`和`tasks.json`的路径和文件名是否正确。引用:[^1]:【经验】纯小白,第一次用物理机VScodeSSH连接虚拟机VScode失败成功解决[^2]:Windows上安装VsCode,通过SSH连接虚拟机中的Linux进行远程开发的配置方法[^3]:如何通过VScodessh连接自己的linux虚拟机相关问题:1.如何解决VSCode远程调试时出现的“无法打开源文件”错误?2.如何配置VSCode以使用Makefile编译C项目并调试?3.在远程调试时如何查看和修改内存?4.如何配置条件断点和观察点?</think>### 在 VSCode 中通过 SSH 连接虚拟机调试 C 文件的完整指南 #### 步骤 1:建立 SSH 连接(确保已完成) 1. **虚拟机端配置**: ```bash sudo apt update sudo apt install openssh-server gcc gdb build-essential # 安装必需工具 sudo systemctl enable --now ssh # 启用 SSH 服务[^2] ifconfig | grep inet # 获取虚拟机 IP 地址[^3] ``` 2. **VSCode 端配置**: - 安装 [Remote-SSH](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-ssh) 扩展 - 按 `Ctrl+Shift+P` → `Remote-SSH: Connect to Host` → 输入 `ssh username@虚拟机IP`[^3] #### 步骤 2:准备 C 程序调试环境 1. **安装必要扩展**: - 在远程会话中安装 [C/C++](https://marketplace.visualstudio.com/items?itemName=ms-vscode.cpptools) 扩展 - 安装 [CodeLLDB](https://marketplace.visualstudio.com/items?itemName=vadimcn.vscode-lldb) 或 GDB 调试器支持 2. **创建测试文件**: ```c // main.c #include <stdio.h> int main() { int sum = 0; for(int i=1; i<=5; i++){ sum += i; // 在此行设置断点 } printf("Sum: %d\n", sum); return 0; } ``` #### 步骤 3:配置调试环境 1. **生成调试配置**: - 打开 C 文件 → 点击左侧 "运行和调试" 图标 → 创建 `launch.json` - 选择 `C++ (GDB/LLDB)` 环境 2. **示例配置** (`launch.json`): ```json { "version": "0.2.0", "configurations": [ { "name": "C Debugger", "type": "cppdbg", "request": "launch", "program": "${fileDirname}/${fileBasenameNoExtension}", "args": [], "stopAtEntry": false, "cwd": "${workspaceFolder}", "environment": [], "externalConsole": false, "MIMode": "gdb", "preLaunchTask": "build", "setupCommands": [ { "description": "启用整齐打印", "text": "-enable-pretty-printing", "ignoreFailures": true } ] } ] } ``` 3. **添加编译任务** (`tasks.json`): ```json { "version": "2.0.0", "tasks": [ { "label": "build", "type": "shell", "command": "gcc", "args": [ "-g", // 生成调试信息 "${file}", "-o", "${fileDirname}/${fileBasenameNoExtension}" ], "group": { "kind": "build", "isDefault": true } } ] } ``` #### 步骤 4:调试操作流程 1. **编译程序**: - 按 `Ctrl+Shift+B` 执行编译任务 - 检查终端输出是否生成可执行文件 2. **启动调试**: - 在代码行号左侧点击设置断点(如 `sum += i;` 行) - 按 `F5` 启动调试会话 - 使用调试控制栏: - 继续/暂停(F5/F6) - 单步跳过(F10) - 单步进入(F11) - 查看变量(左侧变量面板) 3. **调试功能演示**: ```bash [调试控制台输出] ▶ 线程 1 "main" 已暂停:断点 1,文件 main.c 第 5 行 ▶ 局部变量:sum=0, i=1 ``` #### 常见问题解决 1. **断点不生效**: - 确保编译时添加 `-g` 参数 - 检查 `launch.json` 中 `program` 路径是否正确 2. **缺少调试符号**: ```bash sudo apt install gdb # 确保安装 GDB gdb --version # 验证版本 (需 ≥7.12) ``` 3. **权限问题**: ```bash chmod +x ${program_name} # 给可执行文件添加权限 ``` 4. **连接中断**: - 在 SSH 配置中添加保持连接参数: ``` Host myvm HostName 192.168.x.x User username ServerAliveInterval 60 ``` #### 调试效果示意图 ``` [VSCode 调试界面] ┌─────────────┬──────────────────────┐ | 变量监视 | int sum = 0 | | | int i = 1 | ├─────────────┼──────────────────────┤ | 调用堆栈 | main (thread 1) | ├─────────────┼──────────────────────┤ | 断点列表 | main.c:5 (已激活) | └─────────────┴──────────────────────┘ ``` ### 相关问题 1. 如何配置 VSCode 调试多文件 C 项目? 2. 使用 GDB 命令行调试与 VSCode 可视化调试有何区别? 3. 如何远程调试运行中的 C 程序进程? 4. 调试时出现 `Unable to start debugging. Unexpected GDB output` 错误如何解决?[^1] [^1]: 【经验】VScode 远程 SSH 连接出错处理 [^2]: SSH 服务安装与配置 [^3]: SSH 连接虚拟机方法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值