vscode remote 到 windows

-

  • 资料来源:

    https://zhuanlan.zhihu.com/p/122999157
    https://docs.microsoft.com/zh-cn/windows-server/administration/openssh/openssh_install_firstuse

  • 更新

    1
    2021.08.30 初始

导语

最近需要偶尔从外面连回实验室电脑,但是因为重装系统缘故,目前的 host 的系统是 win.

首先尝试了 rdp 远程桌面,本来到实验室就需要中转,卡的要死.既然现在的开发环境都是 vscode 一把梭子,何不尝试 ssh ?或者 win 支持这样吗?

vscode remote 到 windows

实际上流程与配置 vscode remote 到 linux 主机完全一样.

  • 配置 host win 系统的 ssh 服务端
  • 配置本地机器的 ssh 客户端
  • 剩下的交给 vscode.

配置 windwos ssh 服务端

得益于微软这些年的拥抱开源,win10 在 1809 之后内置了完整的 openssh 支持.\

首先要安装 openssh

  • 设置 -> 应用 -> 功能 安装 openssh 客户端 + openssh 服务器.openssh 会执行一个 OpenSSH-Server-In-TCP 的服务,允许 ssh tcp 22 端口的入栈流量.如果嫌弃图形界面,还可以用 powershell 安装

  • powershell 管理员运行

    • Get-WindowsCapability -Online | ? Name -like 'OpenSSH*',如果未安装会返回 State : NotPresent.

    • 这里是安装两者的命令

      1
      2
      3
      4
      5
      # Install the OpenSSH Client
      Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0

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

配置 openssh 服务器,又是 powershell 管理员命令

  • Start-Service sshd: 启用 sshd service
  • Set-Service -Name sshd -StartupType 'Automatic': 配置 sshd service 自动启动
  • Get-NetFirewallRule -Name *ssh*: 确认是不是存在 ssh 相关的防火墙规则.
  • New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22: 如果上一步不存在 ssh 相关防火墙规则,即执行这一步创建防火墙规则.

win ssh 连接

ssh user@servername 😂.

通过代理连接 ssh,win 下要折腾一点(假设是 127.0.0.1:1080)

  • 在 git for windows 在 X:\Program Files\Git\mingw64\bin 找到 connect
  • ssh config 配置加入 ProxyCommand connect.exe -S 127.0.0.1:1080 %h %p

配置 win ssh key

这个过程和配置 linux 下 key 登录基本相同.

生成密钥等不加赘述.

不同的是 win 下没有 ssh-copy-id 命令,需要手动把公钥拖到 host.

把公钥内容粘贴到 ~/.ssh/authorized_keys 文件,不存在则创建.

编辑 C:\ProgramData\ssh\sshd_config 注释掉最后两行.

1
2
#Match Group administrators
# AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys

确保 C:\ProgramData\ssh\sshd_config 下面都是 yes,没有则添加.

1
2
3
PubkeyAuthentication yes
PermitEmptyPasswords yes
RSAAuthentication yes

ssh-key 客户端配置文件,不再赘述.

vsc remote

基本上是打开 remote-ssh 之后选择主机类型 windows ,一切 ok !

结束语

和 ssh 到 linux 几乎没啥区别.不过有时还是会遇到延迟较大,需要重启远程机器的情况,总体良好.