前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Mac VS CODE 无法 ssh-remote

Mac VS CODE 无法 ssh-remote

原创
作者头像
叶子Tenney
发布2023-07-22 07:15:55
6770
发布2023-07-22 07:15:55
举报

引言

mac air刷回出厂版本(Mojave)后, 确实获得了无比给力的运行速度和续航能力, 开腾讯会议风扇也不转了, 又可以一用八小时了, 看起来一起都向着好的方向发展, 除了一件事: Visual Studio Code(VS Code).

当我将一切软件都配置好了之后, 发现作为我主力编程软件的VS Code竟然无法使用ssh-Remote连接服务器了. 更离奇的是VS Code Insider居然成功了一次, 之后双双停摆. 在我看来这简直是灵异事件的程度了...

当前情况

Terminal: 可ssh

VS Code: 不可ssh, 不可ssh-Remote

VS Code Insider: 不可ssh, 不可ssh-Remote(成功仅首次)

过程

删除服务器服务文件

第一个值得考虑的就是因为客户端的CODE版本不同产生了不同的服务端configFile文件, 先删掉试试.

在本地点击About Visual Studio Code可获得Commit id如: b3e4e68a0bc097f0ae7907b217c1119af9e03435. 实际上VSCode软件当前版本的提交的HASH值.

在服务器端可通过ls ~/.vscode-server查看vscode-server的软件目录, 看以看到以Commit id命名的相应文件夹.

这时候可以删除后本地连接使自动下载, 也可以去官网下载对应版本的 vscode-server 软件,手动更新, 方法来自VSCode Remote 报错,无法连接??.

更新依然无法连接.

绕过密码验证

第二次尝试, 查看ssh-Remote连接时使用的命令.

VS Code中的Terminal中可以得到连接中使用的命令ssh -v -D 51465 -o ConnectTimeout=15 10.9.65.31, 尝试输入可以获取报错记录.

代码语言:shell
复制
Tenneys-Air:~ tenney$ ssh 127.0.0.1 -v
OpenSSH_7.9p1, LibreSSL 2.7.3
...
debug1: Authentications that can continue: publickey,password,keyboard-interactive
debug1: Trying private key: /Users/tenney/.ssh/id_dsa
debug1: Trying private key: /Users/tenney/.ssh/id_ecdsa
debug1: Trying private key: /Users/tenney/.ssh/id_ed25519
debug1: Trying private key: /Users/tenney/.ssh/id_xmss
debug1: Next authentication method: keyboard-interactive
debug1: read_passphrase: can't open /dev/tty: Device not configured
debug1: Authentications that can continue: publickey,password,keyboard-interactive
...
Permission denied, please try again.
debug1: read_passphrase: can't open /dev/tty: Device not configured
Received disconnect from 127.0.0.1 port 22:2: Too many authentication failures
Disconnected from 127.0.0.1 port 22

可以看出, ssh/dev/tty进行了多次请求访问, 并全部失败. 又因访问过多被拒绝.

查看/dev/tty权限发现无异常, 而Terminal可以正常访问说明软件无异常.

/dev/tty是一个用于验证密码的软件, 而且顺序位于密钥验证的后面. 虽然没搞懂为什么, 但既然提示无法访问, 那就不访问, 使用公钥连接而非密码就可以跳过这一步, 如How do you copy the public key to a ssh-server?.

代码语言:shell
复制
# 创建计算机key
ssh-keygen
# 推送至服务器
ssh-copy-id -i ~/.ssh/id_rsa.pub tenney@10.9.65.31

结束后VS Code Termanal成功登录, 但依然无法使用ssh-Remote.

排除终端差异

使用env > $HOME/Desktop/userenv.txt分别可以查看TermanalVS Code Termanal的环境How to export and import environment variables in windows? - Stack Overflow以判断差异, 但是无决定性差异.

升级openssh

查阅网络确实有因系统版本导致ssh不可用的事例, 考虑到使用的ssh参数可能不能被服务端支持, 尝试升级ssh客户端.

ssh -V获取当前版本.

OpenSSH_7.9p1, LibreSSL 2.7.3

现在最新的OpenSSH版本是9.1, 因此值得更新试试.

代码语言:shell
复制
# openssh update
brew install openssh
# success
brew install automake
brew install opencc

其中出现了一些小插曲就是openssh的依赖软件有一个叫mandoc的官网炸了上不去, 所以就手动安装了其他的. 但是事实上因为没有办法获得mandoc, 所以其实没有安装成功openssh, 只是把一些依赖软件安装了, 但是不知道为什么, 但是解决了...

其中安装的最后一个软件是automake, 所以记录一下.

疑点

ssh的参数到底调整了什么

Terminal中所有的参数都是可以正常使用的, 但是在VS Code中除了-v以外的所有参数都会报错. 可能是由于-v是查看详细信息, 所以对连接过程无影响.

在使用公钥连接而非密码之后, 理应绕过了/dev/tty权限的问题, 但-D/-o的命令只要添加, 就会报错.

为什么成功了一次

最大的疑惑就是为什么在VS Code失败的情况下为什么VS Code Insider成功了第一次, 但是之后我在删除所有插件, 更换旧版本乃至删除服务器.vscode文件夹都毫无反应.

实在是分不清啊...

automake是什么

GNU Automake是一种编程工具,可以产生供make程序使用的Makefile,用来编译程序。它是自由软件基金会发起的GNU计划的其中一项,作为GNU构建系统的一部分。automake所产生的Makefile符合GNU编程标准。

Automake - 维基百科,自由的百科全书

我的理解, 是用来给make "make"的.

结论

能用的时候, 就尽量不要瞎整, 恩.

毕竟我为了这玩意毫无成就感的折腾了四天...

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 引言
  • 当前情况
  • 过程
    • 删除服务器服务文件
      • 绕过密码验证
        • 排除终端差异
          • 升级openssh
          • 疑点
            • ssh的参数到底调整了什么
              • 为什么成功了一次
                • automake是什么
                • 结论
                相关产品与服务
                腾讯会议
                腾讯会议(Tencent Meeting)为企业打造专属的会议能力,卓越的音视频性能,丰富的会议协作能力,坚实的会议安全保障,提升协作效率,满足大中小会议全场景需求。您可以使用腾讯会议进行远程音视频会议、在线协作、会管会控、会议录制、指定邀请、布局管理、同声传译等。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档