VSCode通过SSH远程登录Ubuntu虚拟机
- 简介
- 1. 在虚拟机安装SSH
- 下载SSH
- 配置防火墙
- 2. 远程登录Ubuntu
- 使用Windows系统命令行登录
- 3. 使用SSH公钥免输密码登录
- 在虚拟机创建公钥文件夹
- 生成公钥
- 4. 配置VSCode
- 安装`Remote - SSH`插件
- 配置VSCode远程环境
简介
嵌入式开发中常用Linux系统和交叉编译工具链进行开发。常见的做法是使用Linux(虚拟机或服务器)进行交叉编译,使用Windows连接嵌入式主机进行调试。为了完成交叉编译,Windows可以使用VSCode的Remote - SSH
插件进行远程连接,既可方便地使用Linux的终端,也可方便地在VSCode中编辑代码。
以下是在Ubuntu桌面版虚拟机中安装SSH服务器,并在Windows通过VSCode SSH远程登录的步骤。
1. 在虚拟机安装SSH
下载SSH
- 在Ubuntu中打开终端。
- 运行以下命令1下载安装SSH。
sudo apt update
sudo apt install openssh-server
- 等待安装完成后,运行以下命令查看SSH服务的状态。
sudo systemctl status ssh
- 输出
active (running)
表明成功安装且自动运行了。
● ssh.service - OpenBSD Secure Shell server
Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2024-04-04 02:21:09 CST; 12h ago
Docs: man:sshd(8)
man:sshd_config(5)
Main PID: 36845 (sshd)
Tasks: 1 (limit: 4595)
Memory: 5.5M
CPU: 114ms
CGroup: /system.slice/ssh.service
└─36845 "sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups"
- 若SSH服务关闭了,则通过以下命令打开
sudo systemctl enable ssh
配置防火墙
- 注意,Ubuntu系统可能默认启动了防火墙,需要在防火墙中打开SSH服务的端口,或者关闭防火墙。
- 在防火墙中打开SSH服务端口
- 查看防火墙中SSH服务的名字。
sudo ufw app list
- 其中
OpenSSH
是SSH服务的名字。
Available applications: OpenSSH Samba
- 开启SSH服务端口。
sudo ufw allow 'OpenSSH'
- 关闭防火墙
sudo ufw disable
- 目前Ubuntu的SSH服务准备就绪。
2. 远程登录Ubuntu
使用Windows系统命令行登录
- 运行以下命令获取Ubuntu虚拟机的IP地址,以本地局域网为例。
ifconfig
- 从输出可见本地网络IP地址为
192.168.28.128
。
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.28.128 netmask 255.255.255.0 broadcast 192.168.28.255
inet6 fe80::a3b1:93cc:e689:e515 prefixlen 64 scopeid 0x20<link>
ether 00:08:29:eb:0d:c6 txqueuelen 1000 (Ethernet)
RX packets 1212406 bytes 1755611771 (1.7 GB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 246724 bytes 29298116 (29.2 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
- 打开Windows终端,通过
ssh username@ip_address
命令发起远程连接。username
是Ubuntu系统的用户名ip_address
是上一步获取的IP地址。
- 此处以我的用户为例,运行以下命令。
ssh fenst@192.168.28.128
- 输入用户密码后,即可成功登录。
fenst@192.168.28.128's password:
*** System restart required ***
Last login: Thu Apr 4 16:31:39 2024 from 192.168.28.1
fenst@fenst-virtual-machine:~$
- 到这一步说明SSH服务可以正常使用。
3. 使用SSH公钥免输密码登录
在虚拟机创建公钥文件夹
- 在上一步连接到虚拟机的终端中,运行以下命令生成存放公钥的文件夹。
mkdir ~/.ssh
生成公钥
- 退出远程终端
exit
- 使用自己的邮箱,运行以下命令生成公钥
ssh-keygen -t rsa
- 过程中按回车使用默认值即可,不需要填写密码。生成的公钥文件在系统的用户目录下(
C:\Users\93636/.ssh/id_rsa
)。
Generating public/private rsa key pair.
Enter file in which to save the key (C:\Users\93636/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in C:\Users\93636/.ssh/id_rsa.
Your public key has been saved in C:\Users\93636/.ssh/id_rsa.pub.
- 将刚才生成的公钥文件上传到虚拟机。
scp C:\Users\93636\.ssh\id_rsa.pub fenst@192.168.28.128:~/.ssh/authorized_keys
- 输入Ubuntu用户密码即可上传成功。
fenst@192.168.28.128's password:
id_rsa.pub 100% 576 498.7KB/s 00:00
- 通过
ssh username@ip_address
命令可验证,是否不需要输入密码即可登录。
4. 配置VSCode
安装Remote - SSH
插件
- 打开VSCode,搜索并安装插件。
- 在远程组件中选择SSH。
配置VSCode远程环境
- 点击小齿轮进行远程配置。
- 选择配置文件的路径。
- 将文件内容改为你自己的远程环境参数。
Host
是远程连接的名字HostName
是虚拟机的IP地址User
是Ubuntu系统用户名IdentityFile
是刚才生成的公钥文件。
Host fenst
HostName 192.168.28.128
User fenst
IdentityFile "C:/Users/93636/.ssh/id_rsa"
- 完成配置后,点击小箭头进行远程连接。
- 至此完成SSH远程配置,VSCode可以像在Ubuntu中一样在Windows中使用。在VSCode中,你可以直接打开Ubuntu中的文件夹进行编辑,也可以打开终端执行Ubuntu的命令。
- 缺点:每次连接时,VSCode都会同步Ubuntu和Windows的SSH插件版本,所以有时连接时间会稍微长一点。
sudo
命令需要输入用户密码以获取权限。 ↩︎