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

如何通过Xshell经两次SSH跳转连接目标服务器与Jupyter Notebook

我刚好之前折腾过类似的场景,给你两种靠谱的方法,都能在Windows的Xshell里搞定两次SSH跳转,同时打通Jupyter Notebook的访问:

方法一:手动分步跳转+本地端口转发(适合临时使用)

这种方式操作直观,不用提前配置,适合偶尔连接的场景:

  • 第一步:连接跳转机(ip_address1)
    打开Xshell,新建一个会话,填入username1@ip_address1,输入密码或用密钥登录,成功进入跳转机的命令行。
  • 第二步:带端口转发连接目标服务器(ip_address2)
    在跳转机的命令行里执行这条命令:
    ssh -L 8889:localhost:8888 username2@ip_address2
    
    解释一下:8889是你本地Windows要用来访问Jupyter的端口,8888是目标服务器上Jupyter默认的端口(如果你的Jupyter改了端口,这里要对应修改)。执行完后就会登录到目标服务器的命令行。
  • 第三步:启动目标服务器的Jupyter并访问
    在目标服务器的命令行里启动Jupyter:
    jupyter notebook --ip=0.0.0.0 --no-browser
    
    启动后会输出一个带token的链接,比如http://localhost:8888/?token=xxxxxx,你把这个链接里的localhost:8888改成127.0.0.1:8889,然后在本地Windows的浏览器里打开这个修改后的链接,就能正常访问Jupyter了。
方法二:配置Xshell代理+隧道实现一键连接(适合长期使用)

如果需要经常连接,建议配置成一键会话,省去每次手动输入命令的麻烦:

  • 第一步:新建目标服务器的会话
    打开Xshell,点击「新建」,会话名称随便填(比如「目标服务器-带跳转」),切换到「连接」标签:
    • 主机:填写ip_address2
    • 端口:默认22(如果目标服务器SSH端口改了,填对应端口)
    • 用户名:填写username2
  • 第二步:配置本地端口转发(打通Jupyter)
    切换到「隧道」标签,点击「添加」:
    • 类型:选择「本地(Local)」
    • 源主机:填localhost
    • 源端口:填你本地要用来访问的端口(比如8889
    • 目标主机:填localhost
    • 目标端口:填Jupyter在目标服务器的端口(默认8888
      点击「确定」保存这条隧道规则。
  • 第三步:配置SSH跳转代理
    切换到「代理」标签:
    • 代理类型:选择「SSH」
    • 点击「设置」,在弹出的窗口里填写跳转机的信息:
      • 主机:ip_address1
      • 端口:默认22(如果跳转机SSH端口改了,填对应端口)
      • 用户名:username1
      • 身份验证:选择密码或密钥(和你平时登录跳转机的方式一致)
        点击「确定」回到代理标签,勾选「使用代理服务器」。
  • 第四步:一键连接并访问Jupyter
    保存这个会话,双击它就能自动完成两次SSH跳转(先连跳转机,再连目标服务器)。登录到目标服务器后,同样执行jupyter notebook --ip=0.0.0.0 --no-browser,把输出的链接里的端口改成你设置的本地端口(比如8889),在本地浏览器打开即可。
一些注意事项
  • 如果跳转机或目标服务器的SSH端口不是默认的22,一定要在对应的会话配置里修改端口号。
  • 如果Jupyter在目标服务器上用了非默认端口,要同步修改端口转发里的「目标端口」。
  • 用密钥登录的话,记得在Xshell的「用户身份验证」里选择「公钥」,并导入对应的私钥文件。

内容的提问来源于stack exchange,提问作者zichen wang

火山引擎 最新活动