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 myserverHostName 服务器IPUser 用户名Port 2202IdentityFile ~/.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 可直接编辑远程文件,无缝开发体验。

相关参考

  • VSCode Remote-SSH 官方文档
  • CSDN 免密登录教程

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


效果截图(可选):

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

适用人群

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

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


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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/74904.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一些需要学习的C++库:CGAL和Eysshot

写在前面: 从开始工作到现在,去过多家公司,多个行业, 虽然大部分时间在通信业,但也有其它的行业的工作没有做完,但也很感兴趣。每次想要研究一下时,总是想不起来。 这里写一些信息,…

蓝桥杯16天刷题计划一一Day01

蓝桥杯16天刷题计划一一Day01(STL练习) 作者:blue 时间:2025.3.26 文章目录 蓝桥杯16天刷题计划一一Day01(STL练习)[P1540 [NOIP 2010 提高组\] 机器翻译 - 洛谷 (luogu.com.cn)](https://www.luogu.com.…

相对位置2d矩阵和kron运算的思考

文章目录 1. 相对位置矩阵2d2. kron运算 1. 相对位置矩阵2d 在swin-transformer中,我们会计算每个patch之间的相对位置,那么我们看到有一连串的拉伸和相减,直接贴代码: import torch import torch.nn as nntorch.set_printoptio…

Redis 版本演进及主要新特性

Redis 版本发布历史 稳定版本时间线 Redis 2.6 (2012年)Redis 2.8 (2013年11月)Redis 3.0 (2015年4月) - 首次支持集群Redis 3.2 (2016年5月)Redis 4.0 (2017年7月)Redis 5.0 (2018年10月)Redis 6.0 (2020年4月)Redis 6.2 (2021年2月)Redis 7.0 (2022年4月) - 最新稳定版(截至…

HTML5 Geolocation(地理定位)学习笔记

一、HTML5 Geolocation简介 HTML5 Geolocation(地理定位)API用于获取用户的地理位置信息。通过这个API,可以获取用户的纬度、经度、海拔等信息。由于地理定位可能涉及用户隐私,因此只有在用户同意的情况下,才能获取其…

爱普生VG3225EFN压控晶振5G基站低噪声的解决方案

在 5G 通信网络的高速发展中,系统噪声的控制成为保障网络可靠性与数据吞吐量的关键。爱普生 VG3225EFN 压控晶振凭借其卓越的低噪声特性,成为 5G 基站时钟系统的理想选择。通过创新的技术设计,这款晶振不仅为基站提供了稳定的时钟基准&#x…

【问题解决】Linux安装conda修改~/.bashrc配置文件后,root 用户下显示 -bash-4.2#

问题描述 在Linux安装conda下的python环境时候,修改了~/.bashrc文件,修改完成后,再次进入服务器后,登录时候显示的不是正常的[rootlocalhost ~]#,而是-bash-4.2# 原因分析: 网上原因有:/root下…

机器学习knnlearn5

import numpy as np from os import listdir from sklearn.neighbors import KNeighborsClassifier as kNN# 此函数用于将一个32x32的文本文件转换为一个1x1024的一维向量 def img2vector(filename):"""将32x32的文本文件转换为1x1024的向量:param filename: 要…

git revert 用法实战:撤销一个 commit 或 merge

git revert 1 区别 • 常规的 commit (使用 git commit 提交的 commit) • merge commit 2 首先构建场景 master上的代码 dev开发分支上,添加一个a标签,并commit这次提交 切到master上,再次进行改动和提交 将de…

自然语言处理|高效法律助手:AI如何解析合同条款?

引言:法律 AI 的崛起 在数字化浪潮快速发展的今天,人工智能(AI)已不再是一个陌生的概念,它正以快速发展渗透到各个领域,法律行业也不例外。从智能合同审查到法律风险预测,AI 技术为法律工作带来…

【数据分享】2000—2024年我国乡镇的逐年归一化植被指数(NDVI)数据(年最大值/Shp/Excel格式)

之前我们分享过2000-2024年我国逐年的归一化植被指数(NDVI)栅格数据,该逐年数据是取的当年月归一化植被指数(NDVI)的年最大值!另外,我们基于此年度栅格数据按照行政区划取平均值,得到…

办公网络健康监控(域名健康监控)

需求 办公室访问一些网络经常出现故障 现需要时时观察监控这些网络的健康 包含专线网等其他网络 实施 支持 SNMP 且支持 Webhook 发送报警的开源监控系统 hertzbeat:关系型数据库+时序数据库; Zabbix:关系型数据库; LibreNMS:关系型数据库; Prometheus(包含ale…

蓝桥杯 合并数列

问题描述 小明发现有很多方案可以把一个很大的正整数拆成若干个正整数的和。他采用了其中两种方案,分别将它们列为两个数组: {a₁, a₂, ..., aₙ}{b₁, b₂, ..., bₘ} 两个数组的元素和相同。 定义一次合并操作为:将某个数组中相邻的两…

【行驶证识别】批量咕嘎OCR识别行驶证照片复印件图片里的文字信息保存表格或改名字,基于QT和腾讯云api_ocr的实现方式

项目背景 在许多业务场景中,如物流管理、车辆租赁、保险理赔等,常常需要处理大量的行驶证照片复印件。手动录入行驶证上的文字信息,像车主姓名、车辆型号、车牌号码等,不仅效率低下,还容易出现人为错误。借助 OCR(光学字符识别)技术,能够自动识别行驶证图片中的文字信…

个人学习编程(3-29) leetcode刷题

最后一个单词的长度: 思路:跳过末尾的空格,可以从后向前遍历 然后再利用 while(i>0 && s[i] ! ) 可以得到字符串的长度, int lengthOfLastWord(char* s) {int length 0;int i strlen(s) - 1; //从字符串末尾开始//…

PAT甲级(Advanced Level) Practice 1028 List Sorting

原题 1028 List Sorting - PAT (Advanced Level) Practice 题目大意 输入n个学生的id、姓名、分数,再输入C表示对C列进行排序。 id:从小到大排 姓名:姓名不同时从小到大排,相同时id从小到大排 分数:不同时从小到…

UE4学习笔记 FPS游戏制作20 重写机器人和玩家死亡 切换相机和模型

定义父类中的死亡方法 在父类中定义OnDie方法,不需要实现,由子类实现各自的死亡逻辑 新建一个Die方法,处理公共的死亡逻辑 Die的实现: 以前的分离控制现在要延迟做,如果分离了控制器,就无法再获取到玩家的…

Linux信号的诞生与归宿:内核如何管理信号的生成、阻塞和递达?

个人主页:敲上瘾-CSDN博客 个人专栏:Linux学习、游戏、数据结构、c语言基础、c学习、算法 目录 一、认识信号 二、信号的产生 1.键盘输入 2.系统调用 3.系统指令 4.硬件异常 5.软件条件 三、信号的保存 1.block 2.pending 3.handler 四、信号…

DeepSeek API集成开发指南——Flask示例实践

DeepSeek API集成开发指南——Flask示例实践 序言:智能化开发新范式 DeepSeek API提供了覆盖自然语言处理、代码生成等多领域的先进AI能力。本文将以一个功能完备的Flask示例系统为载体,详解API的集成方法与最佳实践。通过本案例,开发者可快…

Linux环境下安装部署Docker

windows下连接Linux: 打开终端: //ssh远程连接 ssh root192.168.xx.xx//输入账号密码 root192.168.xx.xxs password: ssh连接成功! 安装Docker: //安装Docker yum install -y yum-utils device-mapper-persistent-data lvm2 …