Windows 10/11 使用 VSCode + SSH 免密远程连接 Ubuntu 服务器(指定端口)

摘要
本文详细介绍如何在 Windows 系统上通过 VSCode + Remote-SSH 免密登录远程 Ubuntu 服务器(SSH 端口 2202),避免每次输入密码的繁琐操作,提高开发效率。


1. 环境准备

  • 本地系统:Windows 10/11
  • 远程服务器:Ubuntu(SSH 端口 2202)
  • 工具:VSCode + Remote-SSH 插件

2. 生成 SSH 密钥对(Windows 端)

PowerShellCMD 执行以下命令生成密钥对:

ssh-keygen -t rsa -b 4096
  • Enter 确认默认路径(C:\Users\你的用户名\.ssh\id_rsa)。
  • 不要设置密码(否则仍需输入密码)。

生成后,公钥文件为 id_rsa.pub,私钥文件为 id_rsa


3. 复制公钥到远程服务器

方法 1:使用 scp 上传(需临时密码登录)

scp -P 2202 $env:USERPROFILE\.ssh\id_rsa.pub 用户名@服务器IP:~/.ssh/

输入服务器密码完成上传。

方法 2:手动添加公钥(若已能登录服务器)

  1. 登录服务器:
    ssh -p 2202 用户名@服务器IP
    
  2. 在服务器上执行:
    mkdir -p ~/.ssh
    cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
    chmod 700 ~/.ssh
    chmod 600 ~/.ssh/authorized_keys
    rm ~/id_rsa.pub  # 删除临时文件
    

4. 配置 VSCode Remote-SSH

  1. 安装 Remote-SSH 插件

    • 在 VSCode 扩展商店搜索 Remote - SSH 并安装。
  2. 配置 SSH 连接

    • F1Ctrl+Shift+P,输入 Remote-SSH: Open Configuration File,选择 C:\Users\你的用户名\.ssh\config
    • 添加以下内容(替换 服务器IP用户名):
      Host myserver
          HostName 服务器IP
          User 用户名
          Port 2202
          IdentityFile ~/.ssh/id_rsa
      
    • 保存后,VSCode 左侧 Remote Explorer 会显示 myserver
  3. 连接测试

    • 点击 myserver 连接,若无需密码直接进入,则配置成功!

5. 常见问题

Q1:连接失败,提示 Permission denied (publickey)

  • 检查 ~/.ssh/authorized_keys 权限是否为 600
  • 确保 ~/.ssh 目录权限为 700
  • 参考:CSDN 博客

Q2:VSCode 连接超时

  • 检查服务器防火墙是否开放 2202 端口
  • 确保 SSH 服务正常运行:
    sudo systemctl status ssh
    

Q3:用户名含中文导致失败

  • 若 Windows 用户名含中文,建议将密钥放在不含中文的路径,并在 config 中修改 IdentityFile 路径。
  • 参考:博客园

6. 总结

通过 SSH 密钥对 + VSCode Remote-SSH,可以高效实现 Windows 免密登录 Ubuntu 服务器(即使 SSH 端口非默认 22)。

  • 优势
    • 无需每次输入密码,提升开发效率。
    • VSCode 可直接编辑远程文件,无缝开发体验。

相关参考

版权声明:本文为原创文章,遵循 CC 4.0 BY-SA 协议,转载请注明出处。


效果截图(可选):

  • VSCode Remote-SSH 连接成功界面
  • ~/.ssh/authorized_keys 文件内容

适用人群

  • 开发者、运维人员、学生等需要远程连接 Linux 服务器的用户。

关键词
Windows SSH 免密登录 VSCode Remote-SSH Ubuntu 2202 端口 SSH 密钥认证


你的支持是我创作的动力!如果对你有帮助,请点赞 + 收藏! 😊

<think>嗯,用户想在VSCode里设置SSH远程连接Ubuntu,还要登录。我记得之前看过一些步骤,可能涉及到生成SSH钥对,然后把公钥放到服务器上。不过具体步骤可能需要一步步来。 首先,用户需要安装VSCode远程扩展,比如Remote - SSH,对吧?安装完后,应该能在侧边栏看到远程资源管理器。然后配置SSH配置文件,添加主机信息,包括IP地址、用户名和端口。这部分可能需要注意是否正确输入了IP和用户,否则连接会失败。 接下来是生成钥对。用户本地应该用ssh-keygen命令生成,默认是RSA算法。可能需要确认用户是否有权限访问.ssh目录,或者是否需要设置权限。生成的公钥要上传到服务器的~/.ssh/authorized_keys文件中。这里可能需要用scp命令或者手动复制内容。不过如果用户已经能通过码登录的话,可以用ssh-copy-id命令自动复制,这样更方便。 然后,服务器端的权限设置很重要。.ssh目录权限应该是700,authorized_keys是600。如果权限不对,SSH可能不会接受钥,导致失败。用户可能会忽略这点,需要提醒他们检查权限。 配置好之后,在VSCode连接的时候应该选择使用钥,而不是码。如果遇到问题,可能需要检查日志,或者尝试在命令行用ssh命令测试,看是否能登录成功。比如用ssh -vT user@host来查看详细的连接过程,找到错误原因。 另外,用户提到的引用里提到如果网络不好,登录可以避频繁断线。所以确保配置正确后,VSCode远程连接会更稳定。可能还需要注意防火墙设置,确保SSH端口开放,尤其是如果服务器在虚拟机上,比如VirtualBox里的Ubuntu,可能需要配置网络桥接或者端口转发。 用户可能遇到的常见问题包括:IP地址错误,SSH服务未安装或未运行,权限问题,或者钥未正确添加。需要逐一排查这些可能性。例如,在Ubuntu服务器上,确保sshd服务正在运行,并且配置文件中允许公钥认证。 最后,测试连接的时候,如果仍然需要码,可能需要重新启动sshd服务,或者检查VSCodeSSH配置是否正确引用了私钥。有时候配置文件中的路径可能需要用绝对路径,或者私钥的权限是否正确(比如600)。 总的来说,步骤应该是:安装插件,生成钥,上传公钥,配置SSH文件,设置权限,然后测试连接。过程中需要仔细检查每一步是否正确执行,尤其是文件路径和权限问题。</think>### 如何在 VSCode 中配置 SSH 远程连接 Ubuntu 并实现登录? 以下是分步操作指南: --- #### **1. 安装必要插件** - 在 VSCode 中安装 **Remote - SSH** 插件(Microsoft 官方提供)[^3]。 --- #### **2. 生成 SSH 钥对(本地客户端)** - 打开终端,输入以下命令生成钥对(默认使用 RSA 算法): ```bash ssh-keygen -t rsa -b 4096 ``` 默认保存路径为 `~/.ssh/id_rsa`(私钥)和 `~/.ssh/id_rsa.pub`(公钥)[^4]。 --- #### **3. 将公钥上传至 Ubuntu 服务器** - 使用 `ssh-copy-id` 自动复制公钥到服务器: ```bash ssh-copy-id -i ~/.ssh/id_rsa.pub 用户名@服务器IP ``` 或手动将公钥内容追加到服务器的 `~/.ssh/authorized_keys` 文件中[^1]。 --- #### **4. 配置 VSCodeSSH 连接** 1. 打开 VSCode 的 **远程资源管理器**,选择 **Configure SSH Hosts**。 2. 编辑配置文件(通常为 `~/.ssh/config`),添加以下内容: ```plaintext Host UbuntuServer HostName 服务器IP User 用户名 IdentityFile ~/.ssh/id_rsa # 指定私钥路径 Port 22 # 默认SSH端口 ``` [^2] --- #### **5. 测试登录** - 在 VSCode 中选择配置好的 `UbuntuServer`,直接连接即可无需输入码[^5]。 - 若失败,检查服务器端权限: ```bash chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys ``` --- #### **6. 解决常见问题** - **连接超时**:检查防火墙是否放行 SSH 端口(默认 22)。 - **权限错误**:确保本地私钥权限为 `600`(`chmod 600 ~/.ssh/id_rsa`)[^4]。 - **IP 变动**:若服务器使用动态 IP,建议绑定静态 IP 或使用域名[^2]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值