内容自体は拾い物
同じマシンにログインしたいのに、インターナルとグローバルのIPがそれぞれ違うと毎回コマンドを考えるのに脳みそを使ってしまうので、些細なことだけど結構煩わしい。
sshfsなどを使ってマウントしていると、場所を移すたびにunmountしてホストを修正してマウントし直しをする必要があるなど余計具体的に煩わしい。
解決策
上記stackexchangeには複数の解決策が提案されていましたが、自分はこれが一番わかりやすくスマートだと思いました。
コマンドの返り値によって使用する設定を選択できる Match
という文法の存在がいちばんの肝です
以下のように設定することで、ssh host
でどこからでも所定のマシンに接続できます
~/.ssh/config
Match host Host exec "[[ $(curl -s ipinfo.io/ip) != '12.345.67.89' ]]"
User user
HostName 12.345.67.89
Match host Host exec "[[ $(curl -s ipinfo.io/ip) == '12.345.67.89' ]]"
User user
HostName 192.168.2.7