ローカル → 踏み台 → 許可されたユーザーにsuする → ターゲットにssh というケース
functionを作る
function ssh_via_bastion() {
ssh -t bastion_host "su - superuser -c 'ssh $1'"
}
ssh_via_bastion <target_host>
これでもいいが、sshコマンドじゃないしできれば .ssh/config
で一括管理したい
.ssh/configに設定する
踏み台経由で真っ先に思い浮かぶのは ProxyCommand
を使ったやり方
Host host-you-want-to-access
ProxyCommand ssh -W %h:%p <bastion_host>
HostName <target_host>
これは踏み台にsshするときのユーザーと、踏み台からtarget_hostにsshするときのユーザーが同じなら問題ない。 今回は踏み台で別のユーザーになる必要がある。
RemoteCommand
で、sshした先でコマンドを実行することができる
Host host-you-want-to-access
# これ!
RemoteCommand sudo su - root -c 'ssh <target_host>'
# tty割当しないと対話できない
RequestTTY force
HostName <bastion_host>
$ ssh host-you-want-to-access
=> 踏み台経由でアクセスできる