July 12, 2021

多段SSHならProxyJump!さよならProxyCommand

概要

OpenSSHのSSHクライアントを使ってBasition経由で多段SSHするとき、ProxyCommandの代わりにProxyJumpを使うと直感的で分かり易くなって素晴らしい!というお話し。

OpenSSH 7.3/7.3p1 (2016-08-01) から使えるのに、多段SSHでググると未だにProxyCommandが上位に上がるので布教活動。

CentOSだと7.4.1708以降で使える。 CentOS 7.3.1611はOpenSSH 6.6.1p1だけど、7.4.1708からOpenSSH 7.4p1。

ssh_configに書かない場合

ProxyCommand

$ ssh -o ProxyCommand='ssh -W %h:%p Bastion1' Host1

ProxyJump

ProxyCommandと同じように-oでProxyJumpを書くこともできるけど…

$ ssh -o ProxyJump=Bastion1 Host1

Jumpの-JオプションでBastion指定するだけ、分かり易さ段違い!

$ ssh -J Bastion1 Host1

Bastion 2段以上の場合、ProxyCommandはssh_config書かないと無理だと思うけど、ProxyJumpならBastionを『,』で区切るだけ!

$ ssh -J Bastion1,Bastion2 Host1

例えば

$ ssh -J ec2-user@bastion1.example.com,centos@bastion2.example.com centos@192.168.100.40

ssh_configに書く場合

ProxyCommand

Host bastion1
  User         ec2-user
  HostName     bastion1.example.com
  ProxyCommand none
Host bastion2
  User         centos
  HostName     bastion2.example.com
  ProxyCommand ssh -W %h:%p bastion1
Host host1
  User         centos
  HostName     192.168.100.40
  ProxyCommand ssh -W %h:%p bastion2

ProxyJump

Host bastion1
  User         ec2-user
  HostName     bastion1.example.com
  ProxyJump    none
Host bastion2
  User         centos
  HostName     bastion2.example.com
  ProxyJump    bastion1
Host host1
  User         centos
  HostName     192.168.100.40
  ProxyJump    bastion2

© 2020 nissy-lab.com