You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现SSH多级跳转直连部署服务器?解决脚本及无sshpass问题

解决方案

1. 让连接保持不退出

脚本执行后立即退出的核心原因是SSH命令未强制分配伪终端,导致交互式会话无法维持。给每一级SSH命令添加-t参数,强制创建伪终端即可解决:

如果仍想用本地的sshpass(中转服务器无需安装),修改脚本为:

sshpass -p '中转服务器密码' ssh -t 中转用户名@中转服务器IP "sshpass -p '部署服务器密码' ssh -t 部署用户名@部署服务器IP"

-t参数会让SSH启动完整的交互式终端,执行后会停留在部署服务器的命令行,不会自动退出。

2. 无需安装工具,实现免密/交互式输入密码访问

最可靠的方案是SSH密钥转发+配置文件简化连接,完全不依赖第三方工具:

步骤1:本地生成SSH密钥对(无则创建)

在本地终端执行:

ssh-keygen -t ed25519

全程按回车默认设置即可,若需更高安全性可设置密钥密码(每次连接需输入)。

步骤2:将本地公钥传到部署服务器

由于无法直连部署服务器,通过中转服务器转发密钥:

  • 本地先连接中转服务器:ssh 中转用户名@中转服务器IP(手动输入一次中转密码)
  • 在中转服务器上执行:ssh-copy-id 部署用户名@部署服务器IP,输入部署服务器密码,本地公钥会自动写入部署服务器的~/.ssh/authorized_keys文件。

步骤3:配置本地SSH配置文件

编辑本地~/.ssh/config文件(无则新建),添加以下内容:

Host jump
    HostName 中转服务器IP
    User 中转用户名
Host deploy
    HostName 部署服务器IP
    User 部署用户名
    ProxyJump jump

若中转服务器SSH版本低于7.3(不支持ProxyJump),替换为ProxyCommand配置:

Host jump
    HostName 中转服务器IP
    User 中转用户名
Host deploy
    HostName 部署服务器IP
    User 部署用户名
    ProxyCommand ssh -W %h:%p jump

最终使用

之后在本地终端直接执行ssh deploy,即可自动通过中转服务器跳转到部署服务器,全程无需输入密码,且连接会保持交互式会话。

若暂时不想用密钥认证,也可直接用带-t的多级SSH命令手动输入密码:

ssh -t 中转用户名@中转服务器IP "ssh -t 部署用户名@部署服务器IP"

执行后会依次提示输入中转、部署服务器的密码,无需额外工具,且连接不会自动退出。

内容的提问来源于stack exchange,提问作者Arbi Saidi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 20:21:42