vscode remote

vscode remote

社蕙 512 2022-12-11

SSH 抽风

当我想在windows上向CentOS的服务器 push东西的时候:

Unable to negotiate with <IP> port 22: no matching host key type found. 
Their offer: ssh-rsa

那么这个时候你没有办法去用这个指令设置上游库:

ssh -o HostKeyAlgorithms=+ssh-rsa -o PubkeyAcceptedKeyTypes=+ssh-rsa  user@myhost -p 22

因此只能去改.ssh/config文件(参考stackoverflow):

Host nanomicro
    HostName <IP>
    User zhuhengyi
    Port 22
    PubkeyAcceptedAlgorithms +ssh-rsa
    HostkeyAlgorithms +ssh-rsa

但这个时候会发现,git能用了,但是vscode remote罢工了,vscode remote连不上,去翻log,它指出它不能解读PubkeyAcceptedAlgorithms是个什么东西,所以它摆了。找了一下解决方案发现,是Powershell自带的ssh太老了,如果要升级就要手动去下PowerShell/Win32-OpenSSH,下载好之后配置环境变量,在PowerShell里面输入ssh -V即可知道是否成功(不是ssh也不是ssh -v!气死我了),这个时候git和vscode remote都能正常工作。

终端乱码

通过vscode remote连接SSH到服务器之后,bash会出现乱码:

[zhuhengyi@itss EM-full-process-project]$ git init --bare
???? Git??????? /home/zhuhengyi/EM-full-process-project

但是使用PowerShell、cmd、putty连接SSH都没有任何显示上的问题,并且发现没有出现中文字符:

[zhuhengyi@itss EM-full-process-project]$ git init --bare
Initialized empty Git repository in /home/zhuhengyi/EM-full-process-project

更换字体等均无果,最后通过source /etc/profile命令解决了问题,后来发现原因在于profile文件里面有两行重要的变量:

$LANG=en_US.UTF-8
$LC_ALL=en_US.UTF-8

虽然vscode remote在开机的时候会注入$LANG=en_US.UTF-8,但是$LC_ALL没有设置也是一样乱码——换句话来说,就是PowerShell、cmd、putty这些终端之所以不出乱码,而vscode出,根本原因在于vscode用的是真的bash——恐怕随便往服务器上面插个键盘,terminal看出来也是乱码。