Remote(SSH) 相关问题

Remote(SSH) 相关问题

社蕙 540 2022-12-11

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看出来也是乱码。