Appearance
Developing on Remote Machines using SSH and Visual Studio Code
Ubuntu 安装 OpenSSH
大多数的情况下,Ubuntu 已经安装了 SSH 服务器
bash
sudo apt install openssh-server桥接网络模式
网卡采用的是桥接模式的话,虚拟机和宿主机共享物理网卡,在局域网下有同层级的 IP 地址,开发部分网络程序会非常方便,但缺陷在于如果路由器连接的不稳定,可能造成虚拟机和宿主机之间的通信不稳定。

首先从虚拟机的设置里确定使用的桥接网络模式,然后打开虚拟机,通过 ifconfig 确定虚拟机的 ip 地址。

记住这个 IP 地址,然后打开 VSCode,点击最左下角的图标:

在弹出的对话框中选择"connect to host..."然后输入:
bash
<用户名>@<IP>如图:

然后选择 "Linux > Sure" 再输入对应的密码,稍等片刻,等右下角显示 SSH: <ip>并且终端面板显示 bash 的时候,说明连接成功:

NAT 网络模式
NAT 网络的连接方法是在宿主机中虚拟一张网卡,虚拟机通过该虚拟网卡连接外部网络环境。其好处在于虚拟机只能在宿主机内部进行访问,对虚拟机更加安全。此外,外部网络环境的不稳定对虚拟机和宿主机之间的连接影响不大。但较为麻烦的是,虚拟机的端口需要通过虚拟机程序进行端口转发到宿主机的端口,才能访问对应的应用程序(和防火墙的设置很像)。

在虚拟机程序中设置好网络模式和端口转发规则,我建议不要对应宿主机的 22 端口,因为很多时候这些数字小的端口是被系统进行预留的,即便是要用也可能遇到管理员权限需求。如上图,我把虚拟机的 22 转发到了宿主机的 10022 端口。
后续的操作和#桥接网络模式基本一样,但是输入连接的时候需要输入:
bash
<用户名>@localhost:<端口>如下图所示:

之后的步骤也是一样的。
2023-04-16 Update:
VMWare 的 NAT 模式似乎不需要端口映射,直接从 IP 连接即可。

Alpine 连接的方法
Alpine 对 VSCode Remote 的兼容性差一点。
先安装如下依赖^1:
bash
# This is what make vscode remote-ssh work
apk add gcompat libstdc++ curl git
# As alpine by default use busybox and some common utilities behave differently, like grep
apk add grep dropbear-scp dropbear-ssh
# Add zsh if using zsh shell
apk add zsh然后配置一下 ssh 的配置文件 https://stackoverflow.com/a/68815636