developing in remote with vscode remote-ssh

212 阅读3分钟

需求要点

  • 在本地环境中使用 VSCode 文本编辑器 , 基于 VSCode REMOTE-SSH 插件, 实现远程开发。

使用场景

  • 家里/公司有一台很棒的专门开发用的电脑,在外地/在咖啡屋/出差时手里有一台普通的便携本。

工作原理

VSCode remote 为 VSCode 提供的远程开发的功能,通过各种技术方案可以直接在本地机器中对远程代码进行开发,方便各种安全开发、统一环境等场景。

SSH remote 为 VSCode remote 中提供的使用 SSH 协议来完成远程开发的方案,类似于 SSH 登陆到远程主机进行开发,不过 VSCode 内部进行了封装和优化。

本地环境配置

当前问题:(本机环境配置)如果本机没有 SSH 客户端 ,需要进行安装

如果使用 MacOS,无需特殊配制安装,开箱即用,不过记得提前安装 developer tools。

如果使用的是非 MacOS,需安装 SSH 客户端。

解决方案

Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0

远程环境配置

当前问题:(远程环境配置)如果本机没有 SSH 服务端 ,需要进行安装。

如果远程使用的 win10,所以需要安装 OpenSSH。

解决方案

# 
Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'

# Install the OpenSSH Server 
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0

# 启动服务
Start-Service sshd
# 开机启动
Set-Service -Name sshd -StartupType 'Automatic'

# 为了确保安全需要确保防火墙规则配置
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."
}

配置

在本地 VSCode 中安装 Remote Development extension pack 或者 Remote - SSH 插件,即可开始使用 Remote SSH 进行开发。-

  • 点击 Remote 按钮,可以进入 Remote 菜单,也可使用 Show Remote Menu 进入:

连接

当前问题:创建新连接有多个手段,根据需要自行选择。

解决方案

  • 可以通过 Connect To Host,然后 Add New SSH Host 按照提示输入 SSH 连接命令,一般而言直接输入 username@host 即可,username 为远程机器的用户名,host 没有特殊配置一般则为远程机器的 IP,windows 中的 IP 可通过 cmd 使用 ipconfig 命令查看。回车后需要如果连接成功将会提示输入密码,输入 windows 账号对应的密码即可。

  • 可以通过将 SSH 命令添加到 ssh config 文件中来方便连接,如果使用上面的 Add New SSH Host,VSCode 会自动将配置添加到 ssh config 文件中,我们也可以主动更改文件 ~/.ssh/config

Host SSH-name # 名称标识
    HostName 1.1.1.1 # host name,一般为 IP
    User hello # user name

当前问题:二次连接有多个手段,根据需要自行选择。

解决方案

  • 以后连接则可直接在 Remote Menu 中选择对应的连接,
  • 或者在 Remote Explorer 中直接选择对应的配置进行连接。

当前问题: 连接后可选择打开相关文件夹或克隆代码,有多种手段,根据需要进行选择

解决方案

  • 如果连接时未选择开发对应的文件夹,点击左侧的 Open Folder 后 VSCode 将会提示你选择需要开发的文件夹
  • Clone Repository 也是将仓库 Clone 到远程机器上
  • 也可以打开 terminal ,使用相关命令。

使用

当前问题:一个远程开发时常见的问题,服务访问。如我们在进行开发时,本地需要起 server 来预览,然而由于 shell、环境、代码等都是远端的,所以 http 服务也是远端机器提供,此时要访问远端机器提供的服务,则需要端口转发。

解决方案

  • VSCode remote 在下方多了一个 Port Forward 状态栏按钮,且面板区域多了一个 PORTS 面板,点开后可以配置端口的映射。

参考资料

Developing on Remote Machines using SSH and Visual Studio Code

Get started with OpenSSH for Windows | Microsoft Learn