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


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

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

因此,本文将为Windows和Linux系统之间通过基于密钥的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_keys时OpenSSH定义的默认文件名,用于存储公用密钥。您可以在此文件中维护多个公共密钥。确保每个键都在一行上,并且键中间没有换行符。

然后在远程文件中维护您的公共密钥(内容在您的本地文件~/.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. 学了这么多年C语言,你真的知道全局变量,局部变量,静态变量,本地函数,外部函数是如何区分标识的吗?

    动态库内容分析 文章目录 动态库内容分析 1. 动态库编译 1.1 第一个C文件:basic.c 1.2第二个C文件:demo.c 1.3第三个C文件:main.c 2.动态库编译 3.二进制内容分析 ...

  2. 一篇文章搞懂Nginx

    Nginx 的产生 Nginx 同 Apache 一样都是一种 Web 服务器.基于 REST 架构风格,以统一资源描述符(Uniform Resources Identifier)URI 或者统一资 ...

  3. 生产环境部署高可用Rancher

    环境准备: IP hostname role 192.168.200.150 nginx LB 192.168.200.151 master01-151 docker-ce/rke/helm/kube ...

  4. php时间区间,优化显示

    <?php /** * 类似微信的时间显示 * 规则是:今天的,显示几秒前,几分钟前,几小时前,昨天的显示昨天 上午 XX:XX * 再往前,本周的,显示周几+时间,再往前,本年的,显示月日+时 ...

  5. scrum项目冲刺_day04总结

    摘要:今日完成任务. 1.图像识别已优化 2.语音识别正在进行 3.搜索功能 正在进行 总任务: 一.appUI页面(已完成) 二.首页功能: 1.图像识别功能(已完成) 2.语音识别功能 3.垃圾搜 ...

  6. 在PHP中使用SPL库中的对象方法进行XML与数组的转换

    虽说现在很多的服务提供商都会提供 JSON 接口供我们使用,但是,还是有不少的服务依然必须使用 XML 作为接口格式,这就需要我们来对 XML 格式的数据进行解析转换.而 PHP 中并没有像 json ...

  7. ecshop增加调用字段问题汇总

    一.ecshop文章列表页调用缩略图.网页描述等 打开includes/lib_article.php文件,大约在69行 添加 $arr[$article_id]['description'] = $ ...

  8. vs code安装leetcode插件

    vs code 安装不成功啊 1.首先确保有node.js 10+,没有的话去官网下载,安装就可以,安装好之后在cmd命令行中输入: node -v 若出现相关版本信息说明安装成功 2.由于leetc ...

  9. photoshop CS6打不开提示请卸载并重新安装该程序

    运行Photoshop.exe时,提示错误: 解决方案: 以管理员身份运行该exe文件

  10. NetCore5实现https请求

    前言 本文主要介绍在NetCore5中,实现证书加载和https访问请求. 证书准备 首先我们先创建一个自定义的证书Kiba518.pfx. 证书创建参考:最通俗易懂的RSA加密解密指导. 然后将证书 ...