sshでホストごとの設定切り替えとdynamic forwardingとhostsファイル

sshの接続先と設定の切り替え

備忘録くらいのつもりです。主にmacOSやLinuxでのsshを対象に書いております。ホームディレクトリの.sshの中にconfigというファイル名で以下のような形式でテキストファイルを作成します。

Host hogehoge
    Hostname 192.168.10.2
    Port 22
    User hoge
    IdentityFile ~/.ssh/id_rsa_hoge
Host fugafuga
    Hostname fuga.moemoe.jp
    Port 10022
   DynamicForward 1080 
    User fuga
    IdentityFile ~/.ssh/id_rsa_fuga

何が設定できるかは、man ssh_configで詳細に調べることができます。私の場合は上記くらいの設定で十分でした。あとは、

ssh hogehoge

などとホストの名前を入力するだけでポートやユーザー名、鍵の指定までやってくれます。

ダイナミックフォワーディング

上のfugafugaの設定では、Dynamic Forwardingをやっております。このような設定で

ssh fugafuga

とリモートホストのfuga.moemoe.jpに接続して、ローカルマシンのブラウザのネットワークの接続設定の中に、SOCKSプロキシの設定として、ホストをlocalhost、ポートを1080番に設定いたします。この状態でブラウザから外部にアクセスしますと、あたかもfuga.moemoe.jpからアクセスしているように見えます。つまり、アクセス元のIPアドレスが変わります。実際には

ローカルマシン ---(暗号化)--- fuga.moemoe.jp --- 接続先

という通信経路を情報が行き来するわけですが、ローカルマシンとfuga.moemoe.jpの間の通信はhttpであってもsshにて暗号化されるというメリットもあります。

このダイナミックフォワーディングは色々な使い方がありますが、一例を挙げておきます。今は違うのですが、以前は自宅ネットワーク内に自前建てたサーバー(以下ブログサーバー)にWordPressをインストールしておりました。諸事情によりhttpsは別のサーバーに飛ばしており、ブログサーバーにはhttpでしかアクセスすることができませんでした。すると、パスワードなどの入力が平文で流れてしまうという問題がありました。そこで、管理画面へのアクセスは自宅のローカルネットワーク内からのみに限定をし、ブログサーバーとは別のLinuxサーバーにまずsshでログインをしてDynamic Forwadingを行い、それからブログサーバーの管理画面にアクセスをするようにしておりました。

hostsファイルの役割

DynamicDNSを使って外から自宅内のサーバーにアクセスしていたのですが、今度はこうすることによってアクセスの際のホスト名が変わってしまうため(この辺りが変わるとアクセスができなくなったりするのがWordPressってやや面倒だなぁと思ってしまいますが)、ローカルのhostsファイルを編集する必要があったりします。Linuxでは「/etc/hosts」ですが、macOSのhostsファイルは「/private/etc/hosts」にあります。

hostsファイルはDNSを使わない名前解決の手段で、外からのアクセスのホスト名がhogehoge.dynamic.dnsだったとし、一方で自宅内ネットワークでブログサーバーに割り振ったプライベートアドレスが192.168.0.2だとします。そういたしますと、既に存在するエントリと同じような書式にて、

192.168.10.2 hogehoge.dynamic.dns

のような設定を付け足してやればいいことになります。これが簡単ではありますが、ただ、この設定をしてしまうと、hostsファイルの内容が優先されてしまうので外部でアクセスしてもプライベートアドレスが返ってきてしまうことになります。最終的には、簡単なDNSサーバー構築まで確かやっていたのですが、この辺りはsshとdynamic forwardingから大きく逸れますのでまた機会があれば、ということで。

 

コメント

タイトルとURLをコピーしました