惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

D
Docker
博客园 - 三生石上(FineUI控件)
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
博客园_首页
Microsoft Azure Blog
Microsoft Azure Blog
GbyAI
GbyAI
腾讯CDC
酷 壳 – CoolShell
酷 壳 – CoolShell
M
MIT News - Artificial intelligence
Stack Overflow Blog
Stack Overflow Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Jina AI
Jina AI
爱范儿
爱范儿
博客园 - 【当耐特】
雷峰网
雷峰网
S
SegmentFault 最新的问题
美团技术团队
Blog — PlanetScale
Blog — PlanetScale
The GitHub Blog
The GitHub Blog
有赞技术团队
有赞技术团队
G
Google Developers Blog
大猫的无限游戏
大猫的无限游戏
Google DeepMind News
Google DeepMind News
J
Java Code Geeks

Mereith's Blog

记一次代理转发问题的排查与解决 PVE DataCenter Manager 端口号跳转错误修复 k8s + jenkins + gitlab 触发器 【转载】没有编程生产力这样的东西 【后续】居然被 ddos 了 居然被 ddos 了 Tagger - 让版本标签管理更简单 openclash 开启后端口转发失效 nextjs 启动时执行代码 买了太多VPS不知道干什么,干脆做个网站 juhost Level-1 测评 VMISS CN - Hong Kong VMISS JP - Tokyo - BGP 测评 VMISS CN - Hong Kong - BGP HomeLab 的终点是 最近在做的事情 因为选择艰难症,自己写了一套开源博客系统 手撸一个nodejs分布式爬虫,还要可视化 HomeLab 分享 我的个人工作流——开源项目推荐 动手写一个超简单的编译器 safari 插件开发 Safari Extensions Preferences 按钮无响应 设置移动端软键盘回车按钮文案 nginx proxy manager 非标准端口反代 Host 不对 监控 k8s ingress 自动添加域名 DNS 解析 使用 ingress 注解给 traefik ingress 添加中间件 使用流水线功能为文章添加固定结尾 为 VanBlog 添加一个小挂件 基于React/umi/egg自建博客系统 如何正确停止 NodeJS 子进程
ssh 通过跳板机访问目标机器
wanglu@mereith.com (mereith) · 2022-07-21 · via Mereith's Blog

请注意,本文编写于 1647 天前,最后修改于 1416 天前,其中某些信息可能已经过时。

有时候需要用跳板机访问机器,更安全。

对于 openssh 7.3 以上的版本可以使用 ProxyJump, 低于 7.3 可以使用 ProxyCommand

ProxyJump

需要 OpenSSH 7.3 以上版本才可以使用 ProxyJump, 使用下列命令查看OpenSSH 版本:


ProxyJump 命令行使用方法:

ssh -J [email protected]:port1,[email protected]:port2

可以直接使用上述命令通过跳板机直接登录内网机器,比如:

ssh username@目标机器IP -p 22 -J username@跳板机IP:22

如果需要通过多个跳板机则以 , 分割:

ssh username@目标机器IP -p 22 -J username1@跳板机IP1:22,username2@跳板机IP2:22

如果你觉得每次都需要加上 -J 的配置很多麻烦,可以写到配置文件里。修改配置文件 ~.ssh\config,默认没有需要自己创建。增加以下内容:

Host target # 代表目标机器的名字 HostName 目标机器 IP # 这个是目标机器的 IP Port 22 # 目标机器 ssh 的端口 User username_target # 目标机器的用户名 ProxyJump username@跳板机IP:port Host 10.10.0.* # 使用通配符 * 代表 10.10.0.1 - 10.10.0.255 Port 22 # 服务器端口 User username # 服务器用户名 ProxyJump username@跳板机IP:port

也可以为跳板机器一个“别名”方便使用:

Host tiaoban1 # 代表跳板机 1 HostName 跳板机 1 的 IP Port 22 # ssh 连接端口 User username1 # 跳板机 1 的用户名 Host tiaoban2 # 代表跳板机 2 HostName 跳板机 2 的 IP Port 22 # ssh 连接端口 User username2 # 跳板机 2 的用户名 Host target # 代表目标机器的名字 HostName 目标机器 IP # 这个是目标机器的 IP Port 22 # 目标机器 ssh 的端口 User username_target # 目标机器的用户名 ProxyJump tiaoban1,tiaoban2 Host 10.10.0.* # 使用通配符 * 代表 10.10.0.1 - 10.10.0.255 Port 22 # 服务器端口 User username # 服务器用户名 ProxyJump tiaoban1,tiaoban2

使用方法:

ssh target ssh 10.10.0.1 ssh username@target -p22 ssh username@10.10.0.1 -p22

ProxyCommand

如果 OpenSSH 版本低于 7.3 可以使用 ProxyCommand达到同样的效果。

ProxyCommand 命令行使用方法:

ssh username@目标机器IP -p 22 -o ProxyCommand='ssh -p 22 username@跳板机IP -W %h:%p'

同样可以在 ~/.ssh/config 文件中增加配置文件:

Host tiaoban # 任意名字,随便使用 HostName 跳板机的 IP,支持域名 Port 22 # 跳板机端口 User username_tiaoban # 跳板机用户 Host target # 同样,任意名字,随便起 HostName 目标服务器 IP # 真正登陆的服务器,不支持域名必须IP地址 Port 22 # 服务器的端口 User username # 服务器的用户 ProxyCommand ssh tiaoban -W %h:%p Host 10.10.0.* # 可以用*通配符 Port 22 # 服务器的端口 User username # 服务器的用户 ProxyCommand ssh tiaoban -W %h:%p

使用方法同上:

ssh target ssh 10.10.0.1 ssh username@target -p22 ssh username@10.10.0.1 -p22

参考链接

SSH 通过跳板机直接访问内网机器