本文翻译自:5 Steps: Setup VS Code for Remote Development via SSH from Windows to Linux system


5个步骤:设置VS代码以通过SSH从Windows到Linux系统进行远程开发

远程开发是VS代码中非常流行的功能。他们的官方文档提供了以一般方式配置它的标准说明。但是,当我从视窗系统连接到远程的Linux服务器时,由于输入侧 错误,我总是遇到以下损坏的MAC,很难在一处找到完整的解决方案。

因此,本文将为WindowsLinux系统之间通过基于密钥的SSH进行远程连接提供VS Code指南,该指南还处理输入错误时损坏的MAC

为什么我们需要远程开发:

  • 对于软件开发人员,他们通常在本地开发新功能,然后在远程服务器上进行测试。
  • 对于数据科学家来说,他们需要额外的计算资源(例如远程GPU例程)来支持大数据处理。
  • 对于DevOps工程师而言,他们的主要任务之一是在不同的服务器上部署不同的产品,这需要替换的远程配置。
先决条件:
  • 已安装VS Code

    您可以DOWNLO一个从自己的网站做遵循的基本设置我以前的指导。本指南也适用于常规开发工作区。
  • 本地Windows和远程Linux系统上都安装了OpenSSH

    简而言之,这将使您可以使用ssh。您可以通过在两个系统上进行检查ssh -V。然后返回您系统上已安装的OpenSSH的版本。否则,将不安装OpenSSH。您也可以从这里安装Windows版本,从这里安装Linux版本。

    现在开始吧~
目录概述

步骤1:在VS Code中安装远程SSH扩展

步骤2:在PowerShell中验证SSH连接

步骤3:在VS Code中启用远程连接

步骤4:生成SSH密钥对

步骤5:将公钥复制到远端伺服器

[以下安装程序基于Win10 PowerShell]
步骤1:在VS Code中安装远程SSH扩展

启动VS Code->点击前端的扩展图标->在搜索位置搜索远程SSH->安装它:

然后,您将在状态栏的左下方看到一个小的远程连接的图标:

步骤2:在PowerShell中验证SSH连接

在左上方的终端或快捷方式`ctrl+shift+``,以VS Code打开PowerShell终端->如果不是PowelShell,请从此处进行更改:

通过ssh 用户名@主机IP地址在PowelShell中执行来验证SSH连接。(是否在conda env中运行都没有关系)

如果您可以成功登录到远程服务器,则可以进行下一步了。

如果出现输入错误是出现损坏的MAC,如下所示:

  • [x] 您可以尝试以下解决方案:

    首先跑ssh -Q mac。它将返回本地系统上所有可用的MAC加密算法的列表:

然后,根据需要选择其中一个,并通过添加带有-m选项的替代算法来再次连接到远程服务器:

ssh -m hmac-md5-96用户名@主机IP地址

许多人需要尝试几次,知道找到远程Linux服务器支持的算法。

现在,您应该能够登录到远程服务器,并准备好下一步。

步骤3:在VS Code中启用远程连接

进入左下角的远程连接图标->选择“远程SSH:打开配置文件...”。

或者,您可以直接从本地主目录打开ssh配置文件~/.ssh/config

将您的远程服务器信息以以下格式添加到配置文件中:

Host [hostname]
HostName [hostname]
User [username]
MACs **[可选;如果您在步骤2中遇到MAC错误,请在此处找到找到的可用算法]**

如果要连接多个服务器,则只需要保留格式并一一追加即可。

最后,您将获得如下配置文件:(我们将在下一步中返回到IdentityFile

现在,您应该能够连接到远程服务器而不会出现MAC错误。

单击左下角的远程连接图标->选择“远程SSH:连接到主机...”->您将在配置文件中看到维护的远程服务器列表->单机目标服务器(您可以需要输入登录名密码)

成功连接后,将导航至新的VS Code窗口,和远程主机名显示在左下方:

在此之前,您已经通过VS Code成功设置了一个可行的远程开发工作空间。但是,还没有完成。

如果您在此处停止,则每次发出远程连接时都会要求您输入登录密码。而且,您甚至还需要打开一个文件夹,就需要通过VS Code输入该远程服务器上每个操作的密码。这真是令人讨厌。另一方面,密码登录不够安全。每个人都易于使用和理解,但是这种便利以某种方式牺牲了安全级别。暴力攻击很容易破坏密码。

因此,伴随在VS Code中输入密码,不如使用SSH公钥和私钥对进行身份验证。

步骤4:生成SSH密钥对

在VS Code Powershell终端中,执行以下命令:

ssh-keygen

在关键生成过程中,预期提示:

这使您可以定义存储密钥的位置。按ENTER将其保留为默认值。

这样,您就可以输入并再次确认密码以保护私钥(键入是不会显示密码)。此后,将来使用私钥时需要输入此密码。这是一个额外的保护。您可以按ENTER跳过它。

创建完成后,您将看到钥匙的随机图案。并且您的密钥对存储在默认的隐藏~/.ssh目录中:

要仔细检查,您可以通过以下方式查看上述位置的密钥对:

cd ~/.ssh
ls

您将看到两个新文件,id_rsa存储着私钥,id_rsa.pub存储着公钥。运行cat [filename]以检查关键内容。

如果一切都很好。现在,您可以将步骤2中的私钥路径添加到~/.ssh/id_rsassh配置文件中,并使用IdentityFile的名称:

请记住,一个公钥可以多次使用,并且不要与任何人共享您的私钥。

步骤5:将公钥复制到远程服务器

通过VS Code或任何其他带有密码的终端登录到远程服务器。检查authorized_keys文件是否在~/.ssh目录下。如果没有,请通过以下命令创建一个:

cd ~/.ssh
cat authorized_keys

authorized_keysOpenSSH定义的默认文件名,用于存储公用密钥。您可以在此文件中维护多个公共密钥。确保每个键都在一行上,并且键中间没有换行符。

然后在远程文件中维护您的公共密钥(内容在您的本地文件~/.ssh/id_ras.pub中)

vim authorized_keys->按i转换为INSERT模式->在此处添加您的公共密钥内容->按ESC+:+wq写入并退出文件->通过进行重新检查cat authorized_keys

现在,您可以在VS Code中使用安全方便的远程开发工作区了!

摘要

只需返回到您的VS代码即可。发出新的远程连接。现在,您应该能够在没有密码的情况下连接到远程服务器,并像在本地一样在该服务器上进行操作。祝你玩得开心!

VS Code Remote SSH设置的更多相关文章

  1. Xshell报错“The remote SSH server rejected X11 forwarding request.”

    Xshell报错“The remote SSH server rejected X11 forwarding request.” 2012年12月17日 ⁄ Linux⁄ 共 218字 ⁄ 字号 小  ...

  2. Xshell 连接虚拟机出现 "The remote SSH server rejected X11 forwarding request"

    1. 描述 虚拟机:VirtualBox Linux: centOS7 解决了 centOS7在VirtualBox中装好后的网络连接问题 后,用 Xshell 连接服务器时出现下面情况: 2. ss ...

  3. 搭配 VS Code Remote 远程开发扩展在 WSL 下开发

    ❗ 注意:远程开发扩展需要在 Visual Studio Code Insiders 上使用. Visual Studio Code Remote - WSL 扩展允许你直接借助 VS Code 令  ...

  4. VS Code Remote,在服务器上开发程序,开启全新开发模式

    一直使用Idea开发java 程序,头疼的是太太太占用内存了,笔记本电脑经常卡爆,在服务器开发的话又太麻烦,VS Code Remote的带来,解决了这一烦恼.下面来实战一下. VS Code Rem ...

  5. Git TortoiseGit SSH设置

    Git TortoiseGit SSH设置 http://www.cnblogs.com/ChenRihe/p/Git_TortoiseGit_SSH.html TortoiseGit默认的SSH客户 ...

  6. Navicat(连接) -1之SSH 设置

    SSH 设置 Secure SHell (SSH) 是一个通过网络登录其他计算机的程序,在远程服务器运行命令,和从一台机器移动文件到另一台.在不安全的网络中,它提供两台主机之间强大认证和安全加密的的通 ...

  7. 编码规范(二)之Code Templates的设置(转)

    http://swiftlet.net/archives/1199 编码规范(二)之Code Templates的设置(转) 文件(Files)注释标签:/** * @Title: ${file_na ...

  8. 编码规范(一)之Code Templates的设置(转)

    编码规范(一)之Code Templates的设置 基于公司的主流开发工具为eclipse,但每个人都有自己的编码习惯,为了统一格式,这里通过三个方面:设置Code Templates.Checkst ...

  9. The remote SSH server rejected X11 forwarding request

    两台相同的虚拟机,一台没有错误,一个经常出现警告,内容如下所示: The remote SSH server rejected X11 forwarding request 找了很多方法,最后发现是安 ...

随机推荐

  1. 20210719 noip20

    考场 后两题是原题,教练说不用写了(ycx 不讲武德) T1 先手模了 \(n\le5\) 的情况,尝试找规律失败.那就只能 DP 了,最终没搞出来. 记忆化搜索打了 \(n\le20\) 的表,交了 ...

  2. Python习题集(六)

    每天一习题,提升Python不是问题!!有更简洁的写法请评论告知我! https://www.cnblogs.com/poloyy/category/1676599.html 题目 ''' 问题1.对 ...

  3. Element UI:DatePicker的终止日期与起始日期关联

    Template // 起始日期 <el-date-picker v-model="queryParams.startTime" :picker-options=" ...

  4. python库--tensorflow--io操作

    方法 返回值类型 参数 说明 .train.Saver() 实例s var_list=None 指定被保存和恢复的变量 dict: {name: 变量} list: [变量] None: 所有save ...

  5. Jmeter扩展组件开发(10) - 自定义扩展函数助手的开发

    CODE package com.functions;import org.apache.jmeter.engine.util.CompoundVariable;import org.apache.j ...

  6. Shell系列(14)- declare声明变量

    declare声明变量类型 格式 declare [+/-] [选项] [变量名] 选项 -:给变量设定类型属性 +:取消变量的类型属性 -a :将变量声明为数组型 -i :将变量声明为整数型(int ...

  7. 搞不定 NodeJS 内存泄漏?先从了解垃圾回收开始

    通常来说,内存管理有两种方式,一种是手动管理,一种是自动管理. 手动管理需要开发者自己管理内存,什么时候申请内存空间,什么时候释放都需要小心处理,否则容易形成内存泄漏和指针乱飞的局面.C 语言开发是典 ...

  8. 集合转数组:toArray()最优化方法探索

    优化背景 有些场景下(比如入参要求)需要将集合(比如List)转为数组类型,利用集合的toArray方法应该最为方便的,对于toArray()无参方法其返回的是Object[],强制转其他类型数组会C ...

  9. 怎么让jenkins保持后台运行

    今天在腾讯云直接使用命令启动jenkins,java -jar jenkins.war --httpPort=8080,这样启动关掉shell窗口或退回shell窗口,进程就会结束,需要重新 启动,非 ...

  10. CF960G-Bandit Blues【第一类斯特林数,分治,NTT】

    正题 题目链接:https://www.luogu.com.cn/problem/CF960G 题目大意 求有多少个长度为\(n\)的排列,使得有\(A\)个前缀最大值和\(B\)个后缀最大值. \( ...