【配置环境】Windows下 VS Code 远程连接虚拟机Ubuntu

一,环境

  • Windows 11 家庭中文版
  • VMware® Workstation 16 Pro (版本:16.1.2 build-17966106)
  • ubuntu-22.04.2-desktop-amd64

二,关键步骤

  • Windows下安装OpenSSH
  • VS Code安装Remote - SSH插件

三,详细步骤

  1. 在Ubuntu上安装SSH服务器。打开终端,并依次运行以下命令来安装OpenSSH服务器,并启动SSH服务器:

    1. sudo apt update
    2. sudo apt install openssh-server
    3. service sshd restart
  2. 打开Windows上的VS Code,并安装"Remote - SSH"扩展。在侧边栏的扩展视图中搜索"Remote - SSH"并安装它。

  3. 在VS Code中打开命令面板。你可以通过按下 Ctrl+Shift+P(或者点击VS Code左下角的"打开远程窗口"按钮)来打开命令面板。

  4. 在命令面板中,输入"Remote-SSH: Connect to Host",然后选择该选项。

  5. 在弹出的菜单中选择"Configure SSH Hosts"。

  6. 选择"~/.ssh/config"文件或者创建新的配置文件。

  7. 在配置文件中,添加以下内容,替换主机名为Ubuntu的IP地址或主机名,用户名为您在Ubuntu上的用户名:

  8. 返回到命令面板,再次输入"Remote-SSH: Connect to Host"(或者点击VS Code左下角的"打开远程窗口"按钮),然后选择刚才配置的连接。

  9. 输入您的Ubuntu用户密码进行身份验证,但这里遇到了如下错误,说明Windows环境中没有安装OpenSSH客户端。

  10. 以管理员身份运行 PowerShell,使用 PowerShell 安装 OpenSSH。 为了确保 OpenSSH 可用,请运行以下命令:

    1. Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'
  11. 如果尚未安装SSH客户端,则上面的操作会输出以下内容:

    1. Name : OpenSSH.Client~~~~0.0.1.0
    2. State : NotPresent
  12. 然后,执行以下命令安装OpenSSH客户端

    1. Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
  13. 启动并配置 OpenSSH 服务器来开启使用,然后依次运行以下命令来启动 sshd

    1. Start-Service sshd
    2. Set-Service -Name sshd -StartupType 'Automatic'
    3. if (!(Get-NetFirewallRule -Name "OpenSSH-Server-In-TCP" -ErrorAction SilentlyContinue | Select-Object Name, Enabled)) { Write-Output "Firewall Rule 'OpenSSH-Server-In-TCP' does not exist, creating it..." New-NetFirewallRule -Name 'OpenSSH-Server-In-TCP' -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22 } else { Write-Output "Firewall rule 'OpenSSH-Server-In-TCP' has been created and exists." }
  14. 然后再回到步骤8,进行操作。

  15. 连接成功后,VS Code会打开一个新的窗口,显示Ubuntu上的文件系统(可以使用"文件">"打开文件夹"浏览和打开远程主目录中的文件夹。)。

  16. 然后就可以在VS Code中编写、保存和运行Ubuntu环境中的代码了。

  17. 如果要结束 SSH 连接,可以使用"文件">"关闭远程连接"返回到在本地运行 VS Code。

四,参考链接

1.Windows 安装 OpenSSH

2.通过 SSH 进行远程开发

3.远程开发提示和技巧

五,番外知识

1.SSH(Secure Shell)是一种用于远程登录和安全文件传输的网络协议。它提供了一种通过不安全的网络连接(例如,互联网)在客户端和远程服务器之间进行安全的加密通信的方式。以下是SSH的介绍:

  • **安全性:**SSH是一个加密协议,可确保通过不安全的网络连接传输的数据的安全性。它使用公钥加密和对称密钥加密来保护通信的机密性,防止数据被窃听和篡改。
  • **远程登录:**SSH最常用的用途是远程登录。使用SSH客户端,用户可以通过Internet连接到远程服务器,并在远程服务器上执行命令和访问资源,就好像他们直接在服务器上操作一样。
  • **文件传输:**SSH提供了安全的文件传输机制,称为SCP(Secure Copy)或SFTP(SSH File Transfer Protocol)。使用SCP或SFTP,用户可以在本地计算机和远程服务器之间安全地传输文件。
  • **用户身份认证:**SSH使用公钥加密来进行身份验证。在建立SSH连接时,客户端和服器之间会进行公钥交换。客户端会生成一对密钥(公钥和私钥),将公钥发送给服务器。服务器将公钥与特定用户关联,并用于验证用户身份。
  • **端口和配置:**SSH使用默认的TCP端口22进行通信。但是,可以在需要时更改SSH服务器的端口。此外,SSH服务器的配置文件位于服务器上,并且可以用来定义许多不同的行为和限制。
  • **客户端和服务器:**SSH由SSH客户端和SSH服务器组成。客户端用于发起SSH连接并向服务器发送命令和请求。服务器负责接受客户端连接,并提供所需的服务(登录、文件传输等)。
  • **公共网络:**由于SSH提供了安全的加密通信,它被广泛用于在不受信任的公共网络上访问远程服务器。通过SSH,用户可以在互联网上安全地使用远程服务器而无需担心敏感数据的安全性。

总之,SSH是一种安全的远程登录和文件传输协议,它提供了加密通信和身份验证机制,使用户能够在不安全的网络上安全地访问和操作远程系统。


2.OpenSSH是一个开源的实现了远程登录和安全文件传输功能的软件套件。它是SSH协议的一个实现,并提供了一系列命令行工具和守护进程,用于在网络上进行安全的远程访问和文件传输。以下是OpenSSH的介绍:

  • **功能:**OpenSSH提供了通过加密通信协议的安全远程登录和文件传输功能。它支持SSH协议的各种功能,包括加密、公钥和身份验证、远程命令执行、文件传输(通过SCP和SFTP),以及端口转发和隧道等功能。
  • **安全性:**OpenSSH致力于提供安全的通信和数据传输。它使用加密技术保护通信内容,确保数据在传输过程中不被窃听、篡改或伪造。其中包括使用对称密钥算法和公钥加密算法对通信进行加密,并使用各种身份验证方法(例如密码、公钥和证书)确保用户的身份验证。
  • **组件:**OpenSSH由几个核心组件组成。其中,OpenSSH客户端(ssh)用于发起SSH连接并与远程主机交互;OpenSSH服务器(sshd)在远程主机上运行,并负责接受SSH连接、进行用户身份验证以及提供远程登录和文件传输服务;还有其他辅助工具如ssh-keygen用于生成和管理密钥对,以及ssh-agent用于管理私钥的代理身份验证。
  • **操作系统支持:**OpenSSH可以在多种操作系统上运行,包括各种类Unix系统(如Linux、BSD等)以及Microsoft Windows的版本。可以在这些系统上方便地安装和配置OpenSSH,以实现安全的远程登录和文件传输。
  • **配置文件和自定义:**OpenSSH提供了灵活的配置选项,使用户可以根据特定需求进行自定义。通过修改OpenSSH的配置文件(如sshd_config),可以定义安全策略、访问控制规则、端口设置、用户配置等。这使得OpenSSH适应不同的环境和需求。
  • **社区支持和开源:**OpenSSH是一款开源软件,它的源代码是公开可用的。这使得用户和开发人员可以自由地查看、修改和分发代码,并贡献改进。OpenSSH拥有强大的社区支持和广泛的用户群体,因此能够在保持安全性的前提下不断改进和更新。

总体而言,OpenSSH是一款功能强大的开源软件套件,它提供了安全远程登录和文件传输的功能,并通过其加密通信协议确保了数据和用户身份的安全性。它被广泛用于管理远程系统、进行系统维护、远程合作、备份和文件传输等各种应用场景。

相关推荐
CP-DD2 分钟前
Docker 容器化开发 应用
运维·docker·容器
blessing。。1 小时前
I2C学习
linux·单片机·嵌入式硬件·嵌入式
2202_754421541 小时前
生成MPSOC以及ZYNQ的启动文件BOOT.BIN的小软件
java·linux·开发语言
努力的悟空1 小时前
国土变更调查拓扑错误自动化修复工具的研究
运维·自动化
运维&陈同学2 小时前
【zookeeper03】消息队列与微服务之zookeeper集群部署
linux·微服务·zookeeper·云原生·消息队列·云计算·java-zookeeper
周末不下雨3 小时前
win11+ubuntu22.04双系统 | 联想 24 y7000p | ubuntu 22.04 | 把ubuntu系统装到1T的移动固态硬盘上!!!
linux·运维·ubuntu
哎呦喂-ll3 小时前
Linux进阶:环境变量
linux
耗同学一米八3 小时前
2024 年河北省职业院校技能大赛网络建设与运维赛项样题四
运维·网络
Rverdoser3 小时前
Linux环境开启MongoDB的安全认证
linux·安全·mongodb