返回

使用SSH实现VSCode远端互联

前言

在虚拟机中使用VSCode编程时时常卡死,查阅资料后发现有许多人遇到此问题,原因可能是VSCode的默认GPU加速问题,需要修改配置文件关闭。由于我在宿主机使用VSCode不卡顿,遂考虑将前端放置宿主机开发,但又会产生宿主机与虚拟机中项目文件不一致,需要时常来回拷贝覆盖的问题,突然看到有使用SSH实现VSCode远端互联的方法,恰好可以解决我的问题,特此记录。

环境

  • Windows 11 专业版
  • VMware 17 pro
  • Ubuntu 22.04.2
  • VSCode 1.85.1

配置

口令登录

服务端

  1. 在Ubuntu上安装SSH服务器。打开终端,并依次运行以下命令来安装OpenSSH服务器,并启动SSH服务器:
1
2
3
sudo apt update
sudo apt install openssh-server
service sshd restart

客户端

  1. 打开Windows上的VS Code,安装“Remote - SSH”扩展。

  1. 打开VSCode侧边栏的远程资源管理器,右键SSH,选择配置SSH文件

  1. 在文件中输入远端的IP和用户名,再定义该连接的名称即可

在该配置文件中可以配置多个Linux服务器信息

  1. 重新打开VSCode侧边栏的远程资源管理器即可,连接成功后,VS Code会打开一个新的窗口,显示Ubuntu上的文件系统(可以使用“文件”>“打开文件夹”浏览和打开远端目录中的文件夹)

Windows环境中需要提前安装有OpenSSH

  1. 在宿主机VSCode中修改文件后,打开虚拟机可以看到对应文件也同步修改成功。

注意两端的插件是不互通的,需要按照需要自己下载安装

  1. 打开终端也可以看到是远端的终端

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

免密登录

客户端

  1. 生成公私钥对
1
2
cd ~/.ssh/
ssh-keygen -t rsa -f "wireguard"   # -t表示类型选项,这里采用rsa加密算法
  1. 将公钥复制到远程主机的 ~/.ssh/authorized_key 文件中
1
ssh-copy-id -i ~/.ssh/wireguard.pub 用户名@ip

win系统中需要在powershell下先执行,注意下面的wireguard.pub要用第一步自己写的文件名

1
2
3
4
5
6
7
8
9
 function ssh-copy-id([string]$userAtMachine, $args){   
    $publicKey = "$ENV:USERPROFILE" + "\.ssh\wireguard.pub"
    if (!(Test-Path "$publicKey")){
        Write-Error "ERROR: failed to open ID file '$publicKey': No such file"            
    }
    else {
        & cat "$publicKey" | ssh $args $userAtMachine "umask 077; test -d .ssh || mkdir .ssh ; cat >> .ssh/authorized_keys || exit 1"      
    }
}
  1. 配置~/.ssh/config文件,
1
2
3
4
5
Host wireguard
    HostName 192.168.1.135
    User wyatt
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/wireguard 
  • PreferredAuthentications:权限认证(publickey、password publickey、keyboard-interactive),一般直接设为publickey
  • IdentityFile:私钥文件地址

现在就可以在VS Code中编写、保存和运行Ubuntu环境中的代码啦🎉

也可以在win环境的powershell中直接用ssh 用户名@Host连接

参考

Built with Hugo
Theme Stack designed by Jimmy