Featured image of post Tips:SSH 配置通过跳板机连接目标主机

Tips:SSH 配置通过跳板机连接目标主机

- 跳板机

前言

  • 跳板机
    • private key:jumper-server.pem
    • ip:8.217.228.125
  • 目的主机
    • private key:target-server.pem
    • ip:192.168.2.9

使用 SSH Config

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
Host jumper-server
    HostName 8.217.228.125
    User ecs-user
    IdentityFile ~/.ssh/jumper-server.pem
    IdentitiesOnly yes

Host target-server
    HostName 192.168.2.9
    User root
    ProxyJump jumper-server
    IdentityFile ~/.ssh/target-server.pem
    IdentitiesOnly yes

配置后:

1
ssh target-server

这样就可以直接登录 target-server 了。

使用命令行

除了使用 SSH Config,我想是否可以使用命令行配置,命令行如下。

1
ssh -i ~/.ssh/jumper-server.pem -J ecs-user@8.217.228.125 -o IdentityFile=~/.ssh/target-server.pem -o IdentitiesOnly=yes root@192.168.2.9

理论上可以,但是连接不上,我问了 ChatGPT 大概的错误是: -i 和 -o 同时指定会相互影响,-i 优先级比较高,导致 -o 这个用不上,就这样。

想要使用命令行连接可以通过 SSH 的 ProxyCommand 选项来实现:

1
ssh -i ~/.ssh/target-server.pem -o ProxyCommand="ssh -i ~/.ssh/jumper-server.pem -W %h:%p ecs-user@8.217.228.125" root@192.168.2.9
  • -i ~/.ssh/target-server.pem:指定连接目标机时使用的 PEM 文件。
  • -o ProxyCommand="ssh -i ~/.ssh/jumper-server.pem -W %h:%p ecs-user@8.217.228.125":使用 ProxyCommand 来通过跳板机连接到目标机。此时,跳板机使用 jumper-server.pem 文件。
  • root@192.168.2.219:目标服务器的地址。
  • 关键点:-W %h:%p 告诉 SSH 将目标主机地址 (%h) 和端口 (%p) 转发给跳板机。

通过这种方式,你可以在一条命令中同时指定两个不同的 PEM 文件,一个用于跳板机,一个用于目标机。

BingGo 解决了。

FAQ

pem 的文件权限 too open

1
2
chmod 600 ~/.ssh/jumper-server.pem
chmod 600 ~/.ssh/target-server.pem
Licensed under CC BY-NC-SA 4.0
最后更新于 Dec 11, 2024 12:06 UTC
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计