Open1

SSH Matchを使って現在のネットワークによって踏み台を経由するかどうかを切り替えて同じホスト名を使う

3w36zj63w36zj6

結論

現在いるネットワークがexample.comでないときのみ踏み台を経由したい場合の例。

ssh_config
Host hogehoge
    HostName xxx.xxx.xxx.xxx

# 踏み台
Host bastion
    HostName xxx.xxx.xxx.xxx

Match originalhost hogehoge exec "curl -s ipinfo.io/hostname | grep -qFv example.com"
    ProxyJump bastion

補足

  • ホスト名のエイリアスがhogehogeで以下のコマンドの終了ステータスが0のときにProxyJumpを適用
    • curlipinfo.io/hostnameを叩いてホスト名を取得する
      • -sで進捗を表示しない
    • grepでホスト名を確認
      • -qで標準出力しない
      • -Fで固定文字列を検索
      • -vで除外条件を指定