需求要点
- 在本地环境中使用
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