# 在mac上设置vscode远程连接win11
这事太烦躁了,必须拿区块链记录下来。
## 前置条件:
* 必须从mac发起连接,必须连接到win11上!
* win11上登录的用户是微软账户,不可改变!
## 坑1:OpenSSH Server
win11上默认安装了OpensSSH的客户端,但没有安装服务器端。不小心的话,你会以为自己已经安装全了OpenSSH,比如从win11上发起SSH,连接到mac上是可以的,但从mac上要发起连接到win11就连不上。
注意要在win11上安装好OpenSSH Server。
## 坑2:微软账户用户名/密码
不妨设我的微软账户用户名是xxx@outlook.com,密码是yyy,win11的IP是192.168.0.123
在mac上,要连接win11的方法是:
1. ssh xxx@192.168.0.123 然后输入密码: yyy
2. ssh xxx@outlook.com@192.168.0.123 然后输入密码: yyy
两种都试过了,都不行。1的可能性还大点,但就是不行。
所以,我考虑用公钥/私钥配对的方式登录。
## 坑3:authorized_keys
于是我在mac上先生成了公钥/私钥对,由于没有办法在SSH中输入正确的win11密码,所以我也没有办法使用scp或者ssh-copy-id xxx@192.168.0.123 将公钥复制到win11上。当然,这也没什么困难的,拿个u盘copy就是了。
多数情况下你查到的添加公钥到本地的命令可能是这样的:
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
或者使用vi 去编辑~/.ssh/authorized_keys,(顺便说,vim的存盘后退出是:wq)
但win11不同,如果你用的是微软账户登录,那么是管理员,管理员的authorized_keys并没有放在c:\User\xxx\.ssh\authorized_keys下面!而是,C:\ProgramData\.ssh\administrators_authorized_keys
所以,需要把公钥复制粘贴进C:\ProgramData\.ssh\administrators_authorized_keys里面,注意别错了。
那么连接的时候,可以先编辑mac上的~/.ssh/config文件,
Host win11
HostName 192.168.0.123
User xxx
IdentityFile ~/.ssh/id_rsa
存好以后,就可以用ssh win11直接连接上了。
## 坑4:vscode
至此,基本上可以按各种教程来了,在mac上安装vscode,找到插件Remote Development,看一眼应该是微软出品的。安装好以后,它会要你选一下config,找到刚才编辑过的那个就可以了。
连接!
失败!
搜一圈,有人说是RemoteSSH: Path里面要填上absolute path,填上了,没用,继续失败!
没办法,我只好先试着从win11用vscode连mac,成功,我发现win11上的vscode里remote.ssh:remote platform是自动设置的,而在mac上的vscode里面,这一项没有设置,于是在mac的vscode的setting里手动设置了连接到windows。
终于,从mac上的vscode可以连上win11了!
## 续坑:Zemax
我从mac连win11的目的是在mac上写代码,在win上运行,因为zemax只有Windows版本的。而且我的mac内存是千年8G,而win是32G。所以mac就安心当键盘+触控板+Retina屏就最好。
但,同一个zemax+python程序,在win上正常通过,在mac上通过vscode远程登录到win上,运行失败,通过mac用ssh连接到win上,再python run.py,也失败。
报出了一大堆“System.Runtime.Remoting”错误,有可能是Inter-Process Communication (IPC)错误,也可能是zemax做了什么网络版的限制。反正这个问题现在我还没解决。