macbook配置vscode连接腾讯云服务器

在SSH密钥认证体系中,公钥的复制方向是:将客户端(MacBook)的公钥复制到服务器(Ubuntu)。以下是关键原理和操作步骤的澄清:


🔑 SSH公钥认证原理

  1. 客户端(MacBook) 持有 私钥(如 id_rsa_tencent)。
  2. 服务器(Ubuntu) 保存 客户端的公钥(如 id_rsa_tencent.pub)在 ~/.ssh/authorized_keys 文件中。
  3. 连接时,客户端用私钥生成签名,服务器用公钥验证签名,从而确认客户端身份。

❌ 常见误解:是否需要服务器公钥?

  • 不需要将Ubuntu服务器的公钥复制到MacBook
    服务器的主机公钥会在第一次连接时自动缓存在MacBook的 ~/.ssh/known_hosts 文件中,用于验证服务器身份(防止中间人攻击)。这与用户身份认证的公钥无关。

✅ 正确操作步骤(再次确认)

1. 在MacBook生成密钥对(若未生成)
ssh-keygen -t rsa -b 4096 -C "your_email@example.com" -f ~/.ssh/id_rsa_tencent
  • 生成 私钥 id_rsa_tencent(保密!勿泄露!)
  • 生成 公钥 id_rsa_tencent.pub(需上传到服务器)
2. 将MacBook的公钥复制到Ubuntu服务器
  • 方法一:使用ssh-copy-id(推荐)

    ssh-copy-id -i ~/.ssh/id_rsa_tencent.pub username@your_server_ip

    输入服务器密码后,公钥会自动添加到 ~/.ssh/authorized_keys

  • 方法二:手动追加公钥

    cat ~/.ssh/id_rsa_tencent.pub | ssh username@your_server_ip "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
3. 验证服务器配置
# 登录服务器,检查authorized_keys内容
cat ~/.ssh/authorized_keys
# 应包含MacBook公钥内容(以ssh-rsa开头,your_email@example.com结尾)
4. 配置VSCode的SSH连接

在MacBook的 ~/.ssh/config 中添加:

Host tencent-ubuntu
HostName your_server_ip
User ubuntu
Port 22
IdentityFile ~/.ssh/id_rsa_tencent # 指定MacBook的私钥路径
IdentitiesOnly yes

🚨 常见问题排查

  • 连接时提示“Agent admitted failure to sign”
    确保SSH代理正在运行并加载了私钥:

    eval "$(ssh-agent -s)"
    ssh-add ~/.ssh/id_rsa_tencent
  • 公钥已上传但仍要求密码
    检查服务器SSH配置:

    sudo vi /etc/ssh/sshd_config
    # 确保以下参数为yes
    PubkeyAuthentication yes
    AuthorizedKeysFile .ssh/authorized_keys
    # 重启SSH服务
    sudo systemctl restart sshd

📝 总结

  • 公钥流向:MacBook的公钥 → Ubuntu服务器的 authorized_keys
  • 私钥保密:MacBook的私钥(id_rsa_tencent)仅保存在本地,不可泄露。
  • 主机验证:服务器公钥会自动缓存在MacBook的 known_hosts,无需手动操作。

按照此流程配置后,VSCode即可通过SSH密钥无缝连接腾讯云Ubuntu服务器。

### MacBook配置VSCode进行C++开发 #### 安装必要的工具链 为了能够在MacBook上的VSCode环境中顺利编译并调试C++程序,安装Xcode及其命令行工具是必不可少的。通过终端执行`xcode-select --install`可以快速完成这一操作[^1]。 #### VSCode扩展安装 针对C++的支持,在VSCode市场中存在专门设计用于增强其对C++语言特性的理解以及提供诸如 IntelliSense等功能的插件——C/C++ Extension Pack。该集合不仅包含了基本的语言特性支持还集成了代码片段、格式化等实用功能于一身。 #### 创建工作区设置文件夹结构 合理规划项目目录有助于后续工作的开展。通常建议创建独立的工作空间来管理源码与其他资源文件。例如建立名为`.vscode`的隐藏文件夹放置与编辑器相关的配置项;另外还需设立存放可执行文件的目标路径以便后期构建过程中的引用更加便捷。 #### 编写tasks.json实现自动化编译流程定义 为了让开发者能够一键触发整个工程从源代码到最终产物之间的转换,需利用VSCode内置的任务系统编写相应的JSON脚本。下面是一个简单的例子展示了如何指定g++作为编译器并将输出重定向至预设位置: ```json { "version": "2.0.0", "tasks": [ { "label": "build hello world", "type": "shell", "command": "/usr/bin/g++", "args": [ "-g", "${workspaceFolder}/src/hello.cpp", "-o", "${workspaceFolder}/build/Debug/outDebug" ], "group": { "kind": "build", "isDefault": true }, "problemMatcher": ["$gcc"], "detail": "Generated task to build a simple C++ program." } ] } ``` 此段代码明确了编译过程中涉及的各项参数设定,包括但不限于使用的编译指令、输入源文件的位置以及期望得到的结果存储地址等重要信息。 #### 调试适配LLDB环境变量调整 当遇到类似于“Unable to start debugging.LLDB exited unexpectedly with exit code 137 (0x89)”这样的错误提示时,可能是因为当前用户的权限不足以启动所需的进程或者是由于其他原因导致无法定位待调试的应用实例。此时可以通过修改launch.json内的preLaunchTask属性指向之前定义好的task标签名确保每次尝试进入断点前都会先运行一次完整的编译动作;同时确认目标二进制确实存在于预期路径下以免发生找不到可执行文件的情况。对于某些特定版本的操作系统而言,还需要额外注意是否已经授予了足够的隐私访问许可给lldb服务端组件。 ```json { "version": "0.2.0", "configurations": [ { "name": "(lldb) Launch", "type": "cppdbg", "request": "launch", "program": "${workspaceFolder}/build/Debug/outDebug", "args": [], "stopAtEntry": false, "cwd": "${fileDirname}", "environment": [], "externalConsole": false, "MIMode": "lldb", "preLaunchTask": "build hello world", // Ensure this matches your task label. "internalConsoleOptions": "openOnSessionStart" } ] } ``` 上述配置示例说明了怎样正确地指定了要加载的程序入口点,并且关联了一个预先准备好的编译任务以保证最新更改总是能被及时反映出来。此外,“preLaunchTask”的值应当对应前面提到过的tasks.json里的某一项具体活动名称,从而形成一个连贯的工作流。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值