SSH 抽风
github SSH 端口相关
在没有手动设置过.ssh/config
文件的情况下,默认ssh github是没有问题的,但是一旦修改了之后,vscode ssh就会默认连接端口22,但是github正确的端口是443,参考https://gist.github.com/Tamal/1cc77f88ef3e900aeae65f0e5e504794?permalink_comment_id=4833312即可解决问题,核心内容就是重新设置端口。
$ vim ~/.ssh/config # Add section below to it Host github.com Hostname ssh.github.com Port 443 $ ssh -T git@github.com Hi xxxxx! You've successfully authenticated, but GitHub does not provide shell access.
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看出来也是乱码。