【环境配置】【保姆级教程】VSCode SSH 连接 VMware虚拟机Linux Ubuntu 22.04 配置

_integer 2024-09-12 08:07:02 阅读 79

目录

操作系统网络环境NAT模式NAT网络环境配置查看NAT中的网络地址主机网络地址配置虚拟机网络地址配置

主机网络配置虚拟机网络配置通过设置界面配置通过配置文件配置

SSH认证密钥对认证用户名+密码认证

主机SSH配置配置认证方式a)密钥对认证配置b)用户名+密码认证配置

虚拟机SSH配置安装OpenSSH服务器软件包查看SSH服务是否正在运行配置SSH服务设置为开机启动配置SSH服务器设置设置防火墙允许SSH连接配置认证方式a)密钥对认证配置b)用户名+密码认证配置

连接SSH

VS Code配置添加扩展连接SSH方式1 配置文件中添加配置方式2 新建连接

添加工作区目录

参考

本文介绍VS Code通过SSH协议访问VMware虚拟机中的工作区。

操作系统

主机使用Win11,虚拟机使用Linux Ubuntu 22.04。

网络环境

使用SSH建立VSCode与虚拟机的连接需要配置网络环境。

VMware中虚拟机网络连接提供了五个选项,分别是桥接模式NAT模式仅主机模式自定义LAN区段。VMware中虚拟机默认通过NAT连接网络。

image.png

NAT模式

NAT(Network Address Translation),是指网络地址转换,1994年提出的。NAT是用于在本地网络中使用私有地址,在连接互联网时转而使用全局 IP 地址的技术。NAT实际上是为解决IPv4地址短缺而开发的技术。

NAT1.jpg

VMware在主机上通过应用程序提供NAT服务。

image.png

对应NAT模式图中的内容可以在网络适配器中找到Vmnet8虚拟网卡。

image.png

NAT模式服务设置在VMware中配置

image.png

image.png

NAT网络环境配置

此处NAT不添加配置,使用默认配置。

查看NAT中的网络地址

配置主机和虚拟机网络需要:

IP地址、子网掩码、网关IP。

DNS。

虚拟网络编辑器中找到并点击NAT设置

image.png

子网掩码网关IP

image.png

找到并点击DHCP设置

image.png

找到IP地址范围。

image.png

由以上操作找到了IP地址范围网关IP子网掩码

IP地址范围(起始IP地址——结束IP地址):192.168.37.128——192.168.37.254

网关IP :192.168.37.2

子网掩码:255.255.255.0

DNS服务器设置为固定IP。

DNS IP:8.8.8.8

主机网络地址配置

IP地址 :192.168.37.128

网关IP :192.168.37.2

子网掩码 :255.255.255.0

DNS :8.8.8.8

虚拟机网络地址配置

IP地址 :192.168.37.129

网关IP :192.168.37.2

子网掩码 :255.255.255.0

DNS :8.8.8.8

主机网络配置

主机控制面板中找到VMnet8——右键单击——属性

image.png

找到<code>Internet协议版本 4(TCP/IPv4),点击属性

image.png

配置IP地址子网掩码默认网关DNS

image.png

虚拟机网络配置

虚拟机网络配置介绍两种方式 :设置界面配置修改配置文件。两种方式配置等效。

通过设置界面配置

打开设置

image.png

找到网络——有线——设置

image.png

点击IPv4

image.png

配置IPv4。

image.png

配置完成后重启网络配置。

image.png

通过配置文件配置

配置文件目录 :/etc/netplan/

<code>ls /etc/netplan/

# 01-network-manager-all.yaml

sudo vim /etc/netplan/01-network-manager-all.yaml

文件内容。

# Let NetworkManager manage all devices on this system

network:

version: 2

renderer: NetworkManager

ethernets:

enps33:

dhcp4: no

addresses:

- 192.168.37.129/24

routes:

- to: 0.0.0.0/0

via: 192.168.37.2

nameservers:

addresses: [8.8.8.8]

ens33为网络接口名称。

image.png

<code>/24是子网掩码(相当于255.255.255.0)。

routes关键字被用来定义一个到达任意地址(0.0.0.0/0)的默认路由,其网关地址是192.168.37.2

到达任意地址的默认路由routes字段也可以使用以下配置

routes:

- to: default

via: 192.168.37.2

nameservers下的addresses关键字用来定义DNS服务器地址。‌

应用配置。

sudo netplan apply

查看配置。

ifconfig 或 ip addr show

image.png

SSH认证

SSH(Secure Shell)是一种网络协议,用于计算机之间的加密登录和其他安全网络服务。它提供了一种加密的、安全的替代方法,用于远程登录到另一台计算机,确保数据在传输过程中的安全性和完整性。SSH协议在七层网络模型的应用层运行,通常基于‌TCP协议,但也可以利用UDP等协议的特性,以提供高效、有序的数据传输。‌

SSH客户端(主机)登录SSH服务端(虚拟机)需要认证,通过认证的服务端才能通过SSH登录客户端。此处介绍密钥对认证(推荐)和用户名+密码认证

密钥对认证

密钥对指的是由特定的身份验证协议使用的公钥私钥文件。

SSH 公钥身份验证使用不对称加密算法来生成两个密钥文件 – 一个为“私钥”文件,一个为“公钥”文件。 私钥文件等效于密码,在所有情况下都应当保护它们。 如果有人获取了你的私钥,则他们可以像你一样登录到你有权登录的任何 SSH 服务器。 公钥放置在 SSH 服务器上,并且可以共享,不会危害私钥的安全。

基于密钥的身份验证使 SSH 服务器和客户端能够将提供的用户名的公钥与私钥进行比较。 如果无法依据客户端私钥验证服务器端公钥,则身份验证失败。

用户名+密码认证

客户端(主机)登录服务端时(虚拟机)使用服务端的用户名+密码进行登录。

主机SSH配置

Windows 10及以上版本自带了OpenSSH客户端,‌无需额外安装。‌

配置认证方式

a)密钥对认证配置

以下使用到的Windows命令在PowerShell中执行。

若要使用基于密钥的身份验证,首先需要为客户端生成公钥/私钥对ssh-keygen.exe 用于生成密钥文件,可以指定DSARSAECDSAEd25519 算法。 如果未指定算法,则使用RSA。 应使用强算法和密钥长度。

使用Ed25519算法生成密钥对文件。

ssh-keygen -t ed25519

<code>PS C:\Users\Administrator> ssh-keygen -t ed25519

Generating public/private ed25519 key pair.

Enter file in which to save the key (C:\Users\Administrator/.ssh/id_ed25519): # 密钥对保存路径

Enter passphrase (empty for no passphrase):# 输入密码,空表示不设置密码

Enter same passphrase again:# 确认密码

Your identification has been saved in C:\Users\Administrator/.ssh/id_ed25519

Your public key has been saved in C:\Users\Administrator/.ssh/id_ed25519.pub

The key fingerprint is:

SHA256:pt/THqXdd7ACoW20Ay49UqsBLi2SqMyief3KaDv6KSY [username]@[LOCAL-HOSTNAME]

The key's randomart image is:

+--[ED25519 256]--+

| |

| |

| . o o |

|.. o . + * o |

|+ o o + S * o |

|+. o B o o + + |

|oo . o .+ o +|

|Eo++. . .. .o o|

|**=ooo. . .o. |

+----[SHA256]-----+

在指定的路径生成了密钥对。

image.png

C:\Users\Administrator/.ssh/id_ed25519

C:\Users\Administrator/.ssh/id_ed25519.pub

如果不指定算法,生成的密钥对名称是<code>id_rsa和id_rsa.pub

.pub文件是公钥,没有扩展名的文件是私钥。

b)用户名+密码认证配置

主机无需配置。

虚拟机SSH配置

安装OpenSSH服务器软件包

安装OpenSSH服务器软件包。

sudo apt update

sudo apt install openssh-server

查看SSH服务是否正在运行

查看SSH服务是否正在运行。

sudo systemctl status ssh

image.png

如果SSH服务没有自动启动,手动启动:

sudo systemctl start ssh

配置SSH服务设置为开机启动

配置SSH服务设置为开机启动。

sudo systemctl enable ssh

配置SSH服务器设置

配置SSH服务器设置,编辑 <code>/etc/ssh/sshd_config 文件。

sudo vim /etc/ssh/sshd_config

如果修改了sshd_config文件,重启SSH服务,应用更改。

sudo systemctl restart ssh

设置防火墙允许SSH连接

设置防火墙允许SSH连接。

sudo ufw allow ssh

配置认证方式

a)密钥对认证配置

使用密钥对认证不用修改shd_config文件,保持openssh-server的默认配置即可。

需要将主机中生成的SSH公钥添加到虚拟机/home/[username]/.ssh/authorized_keys文件中。

/home/[username]/.ssh/authorized_keys文件中添加主机中生成的.pubkey,并保存。

vim /home/[username]/.ssh/authorized_keys

image.png

b)用户名+密码认证配置

配置用户名+密码方式认证需修改SSH配置文件。

sudo vim /etc/ssh/sshd_config

<code>shd_config配置文件中的PasswordAuthentication是指通过SSH协议进行身份验证时是否允许使用密码认证。去掉PasswordAuthentication前面的#,保存文件。

image.png

连接SSH

主机连接虚拟机SSH。

在主机PowerShell中输入以下命令。

ssh [username]@[host-ip-address]

<code>[username] 是Ubuntu用户名,[host-ip-address] 是Ubuntu服务器的IP地址。

ssh user0@192.168.37.129

VS Code配置

添加扩展

在VS Code 扩展(Ctrl+Shift+X)中搜索Remote。

image.png

安装<code>Remote - SSH 和Remote Explorer

image.png

连接SSH

安装完成后找到远程资源管理器

image.png

选择远程

image.png

连接SSH可通过点击配置文件中添加配置新建连接两种方式。

方式1 配置文件中添加配置

image.png

选择配置文件路径。

image.png

此处显示的<code>C:\ProgramData\ssh\ssh_config路径是全局路径,主机上登录的所有用户可使用此配置路径。其余路径为用户路径

在配置文件中添加配置。

Host 192.168.37.129

HostName 192.168.37.129

User user0

image.png

保存后刷新,打开添加的连接。

image.png

如果使用用户名+密码认证,此处输入虚拟机用户登录密码。密钥对认证跳过此步。

image.png

查看显示已连接。

image.png

方式2 新建连接

点击新建远程

image.png

输入ssh连接命令,Enter。

ssh user0@192.168.37.129

image.png

选择配置保存路径。

image.png

配置已添加。

image.png

保存后刷新,打开添加的连接。

image.png

使用用户名+密码认证,输入虚拟机用户登录密码。密钥对认证跳过此步。

image.png

查看显示已连接。

image.png

添加工作区目录

打开虚拟机目录。

image.png

选择工作区目录。

image.png

点击是。

image.png

资源管理器中,虚拟机中的目录已被打开。

image.png

VS Code 连接虚拟机中的工作区配置完成。


参考

vmware虚拟机NAT模式、桥模式、主机模式原理与区别_vmware nat模式-CSDN博客

OpenSSH for Windows 中基于密钥的身份验证 | Microsoft Learn



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。