0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

学内/学外からの多段sshをMatchオプションで判別し、共通のホスト名でアクセスできるようにする方法

Last updated at Posted at 2020-12-25

はじめに

筆者は今まで
「学内からはProxyCommandなしで入れるけど、学外からは中継サーバーを経由しなければいけないのでProxyCommandが必須!」
という状況で、かつ学内から中継サーバーにアクセスすることができなかったので、~/.ssh/configの中身を別のホストとして分けて書いていました。

  • 例(hogeが目的サーバー、hogehogeが中継サーバー)
Host hoge-in
  HostName                XXX.XXX.XXX.XXX
  IdentityFile            ~/.ssh/id_hoge
  User                    hoge

Host hoge-ex
  HostName                XXX.XXX.XXX.XXX
  IdentityFile            ~/.ssh/id_hoge
  User                    hoge
  ProxyCommand            ssh -XC -W %h:%p hogehoge

Host hogehoge
  HostName                YYY.YYY.YYY.YYY
  IdentityFile            ~/.ssh/id_hoge
  User                    hoge

このようにすると、いる場所によって使用するホスト名が変わります。
これを回避し、共通のホスト名でsshできるようにするやり方を見つけましたのでメモします。

環境

  • MacOS 10.15.7 Catalina
 ❯ ssh -V

OpenSSH_8.1p1, LibreSSL 2.7.3

やり方

~/.ssh/configにおいて、Matchオプションを用いて判別をしてあげれば良いです。


Host hoge
  HostName                XXX.XXX.XXX.XXX
  IdentityFile            ~/.ssh/id_hoge
  User                    hoge

Match originalhost hoge exec "! ping -t 1 -c 1 ZZZ.ZZZ.ZZZ.ZZZ > /dev/null"
  ProxyCommand            ssh -XC -W %h:%p hogehoge


Host hogehoge
  HostName                YYY.YYY.YYY.YYY
  IdentityFile            ~/.ssh/id_hoge
  User                    hoge

ここでoriginalhostはコマンドラインで入力したhostnameに対応します。
つまり、

 ❯ ssh hoge

としたときのhogeに対応します。
また、ZZZ.ZZZ.ZZZ.ZZZは学内サーバーのみからアクセスすることのできるサーバーを指定します。

よって、これらは何をやっているかというと、

Match以下の内容は

  • originalhost = hoge

かつ

  • ZZZ.ZZZ.ZZZ.ZZZpingを飛ばせない状況である

これらを満たすとき、以下の内容(今の場合はProxyCommand)を実行せよ

ということです。
こうすることによって、学内/学外によらず

 ❯ ssh hoge

でアクセスすることができます。

注意・メモ

  • このやり方はsshアクセスのたびにpingを飛ばすということに注意してください。
  • ダブルクォーテーションの中身は好きなコマンドを実行することができます。
    (例えばssh configでの条件分岐ではWi-FiのSSIDをチェックして、特定のSSIDのときには違うホストにアクセスするということをやっています。)
  • Match文は順番に依存します!基本的に上から下に実行されることに注意してください。
    (これをうまく使えば、特定の条件のときだけパラメーターを上書きするといったことも可能です。)

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?