温馨提示×

Ubuntu如何使用SSH代理跳转

小樊
40
2025-12-24 03:29:42
栏目: 智能运维

Ubuntu 使用 SSH 代理跳转

一、ProxyJump 一步直达

  • 适用场景:本机可直接访问跳板机 B,跳板机可直接访问目标机 A,希望在本机直接执行 ssh 到 A。
  • 命令方式:
    • 基本用法:ssh -J userB@B_host userA@A_host
    • 指定端口:ssh -J userB@B_host:22 userA@A_host -p 22
  • 配置文件方式(推荐,便于复用):
    • 编辑:nano ~/.ssh/config(权限建议设为 0600
    • 示例:
      Host jumpbox
          HostName B_host
          User userB
          Port 22
      
      Host targetbox
          HostName A_host
          User userA
          Port 22
          ProxyJump jumpbox
      
    • 连接:ssh targetbox
  • 说明:ProxyJump 是 OpenSSH 7.3+ 内置指令,简洁安全,适合日常使用。

二、旧版 OpenSSH 使用 ProxyCommand 兼容

  • 当本机 OpenSSH 版本较老不支持 -J 时,可用 ProxyCommand 通过跳板转发:
    • 命令方式:
      ssh -o ProxyCommand="ssh userB@B_host nc %h %p" userA@A_host
      
    • 配置文件方式:
      Host targetbox
          HostName A_host
          User userA
          Port 22
          ProxyCommand ssh userB@B_host nc %h %p
      
  • 依赖说明:部分系统默认未安装 netcat-openbsd/nc,可先安装(如 sudo apt install netcat-openbsd),或改用其他命令(见下一节)。

三、通过 HTTP/HTTPS 或 SOCKS 代理跳转

  • 适用场景:本机无法直接连跳板机,但可通过公司/家庭HTTP/HTTPS 或 SOCKS 代理访问跳板机。
  • 安装工具:
    • Debian/Ubuntu:sudo apt-get update && sudo apt-get install connect-proxy
  • 命令方式(以 SOCKS5 为例):
    ssh -o ProxyCommand="connect -S 127.0.0.1:1080 %h %p" user@target_host
    
  • 配置文件方式:
    Host target_via_proxy
        HostName target_host
        User user
        ProxyCommand connect -S 127.0.0.1:1080 %h %p
    
  • 提示:将 127.0.0.1:1080 替换为你的实际代理地址与端口;如使用 HTTP 代理,将 -S 改为 -H

四、常见扩展与排错

  • 多跳链路:可链式指定多个跳板,例如 ssh -J user1@hop1,user2@hop2 user3@dest;或在配置中使用 ProxyJump jump1, jump2
  • 本地端口转发配合跳板:先连上跳板并映射端口,再访问映射端口即可到达目标服务(适合浏览器或客户端不支持 SOCKS 的场景)。
  • 稳定性增强:长时间会话建议使用 autossh,如 autossh -M 2000 -N -f -L 2222:A_host:22 userB@B_host,随后 ssh -p 2222 userA@localhost 连接目标。
  • 权限与连通性检查:
    • 确保跳板机允许 TCP 转发(服务器端 sshd_configAllowTcpForwarding yes,默认通常为开启;修改后 sudo systemctl restart sshd)。
    • 使用密钥登录可避免频繁输入密码并提升可靠性(在跳板与目标机分别部署公钥到 ~/.ssh/authorized_keys)。

0