Ubuntu如何使用SSH代理跳转
导读:Ubuntu 使用 SSH 代理跳转 一、ProxyJump 一步直达 适用场景:本机可直接访问跳板机 B,跳板机可直接访问目标机 A,希望在本机直接执行 ssh 到 A。 命令方式: 基本用法:ssh -J userB@B_host...
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
- Debian/Ubuntu:
- 命令方式(以 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_config中AllowTcpForwarding yes,默认通常为开启;修改后sudo systemctl restart sshd)。 - 使用密钥登录可避免频繁输入密码并提升可靠性(在跳板与目标机分别部署公钥到
~/.ssh/authorized_keys)。
- 确保跳板机允许 TCP 转发(服务器端
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu如何使用SSH代理跳转
本文地址: https://pptw.com/jishu/779419.html
