You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何直接SSH连接远程服务器的内部节点以使用VSCode的code命令打开.ipynb文件

如何直接SSH连接远程服务器的内部节点以使用VSCode的code命令打开.ipynb文件

看起来你遇到的核心问题是:VSCode的code命令只能在它直接管理的远程会话中生效。当你先SSH到主服务器,再从主服务器跳转内部node1节点时,相当于进入了一个脱离VSCode控制的独立shell环境——不仅code命令不在PATH里,就算手动调用也没法和本地VSCode建立通信。

下面给你两种最实用的解决方案,根据你的网络环境选择即可:

方案一:本地直接SSH到node1(网络允许的情况)

如果你的本地机器可以直接访问node1的IP/域名,直接让VSCode和node1建立远程连接是最直接的方式:

  1. 打开VSCode,按下Ctrl+Shift+P(Windows/Linux)或Cmd+Shift+P(Mac),输入Remote-SSH: Open SSH Configuration File,选择你本地的SSH配置文件(一般路径是~/.ssh/config)。
  2. 在配置文件里添加node1的连接信息:
    Host node1
        HostName <node1的公网IP或域名>
        User <你在node1上的用户名>
        IdentityFile <如果用密钥登录,填你的私钥路径,比如~/.ssh/id_rsa>
    
  3. 保存配置后,再次打开命令面板,输入Remote-SSH: Connect to Host,选择node1。VSCode会自动在node1上部署远程服务,连接成功后,你在VSCode的终端里直接输入code a.ipynb就能打开文件了——此时code命令已经在PATH里,完全正常工作。

方案二:通过主服务器跳板连接node1(内网节点场景)

如果node1是主服务器背后的内网节点,本地无法直接访问,那可以通过SSH的跳板功能让VSCode自动完成跳转:

  1. 同样打开VSCode的SSH配置文件,先配置主服务器的信息,再添加node1的跳板配置:
    Host main-server
        HostName <主服务器的公网IP或域名>
        User <你在主服务器上的用户名>
        IdentityFile <主服务器的私钥路径>
    
    Host node1
        HostName <node1的内网IP或主机名>
        User <你在node1上的用户名>
        IdentityFile <node1的私钥路径,和主服务器一致的话可以省略>
        ProxyJump main-server
    

    注:如果你的SSH版本较旧(低于7.3),ProxyJump可能不支持,这时可以用ProxyCommand替代:

    Host node1
        # 其他配置不变
        ProxyCommand ssh -W %h:%p main-server
    
  2. 保存后,用Remote-SSH: Connect to Host选择node1,VSCode会自动先连接主服务器,再无缝跳转到node1。连接完成后,你在VSCode终端里就能直接用code命令打开node1上的.ipynb文件了。

为什么之前的方法行不通?

你之前手动调用~/.vscode-server/.../code的方式无效,是因为这个code命令属于主服务器上的VSCode远程会话,而你跳转node1后,这个命令无法和本地VSCode建立通信通道——VSCode的远程CLI工具是和当前连接的服务器绑定的,跨节点后就失效了。

备注:内容来源于stack exchange,提问作者xu chen

火山引擎 最新活动