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から大きく逸れますのでまた機会があれば、ということで。
コメント