
私はローカルSSHサーバーを設定しました。
~/.ssh/config
:
Host myserver-local
HostName 192.168.2.8
User iago-lito
Port 22
リモートアクセス用に設定しました。IPなしアクセスできるアカウント渡すdyndns IP検証のために、私は他のネットワークからアクセスするときに次のようなきちんとしたエイリアスを使いたいと思います。
~/.ssh/config
:
Host myserver
HostName myserver.ddns.net
User iago-lito
Port 22
残念ながら、私のルータが許可していないのでNATループバック、次を使用する必要があります。
ssh myserver
私が去るとき:
ssh myserver-local
家にいるとき...これにより、スクリプトを自動化することが非常に迷惑になりますscp
。git push
など。
どちらの場合も、同じエイリアスが機能するようにするにはどうすればよいですか?
答え1
サーバーのローカルアドレスをpingし、結果に応じて1つまたは別の.ssh / configファイルを交換するスクリプトを作成できます。たとえば、
ping -c1 -W1 192.168.x.x
オプションはカウント(例:1ping)と待機(1秒)です。 pingの戻り値を使用します。 - 0ではなく0を見つけました。見つかりません。
ネットワークに接続すると、このスクリプトを実行するように設定できます。
内容が短くて申し訳ありませんが、携帯で書いています。
答え2
かなり近代的なOpenSSHでは、シェルコマンドを実行してMatch
ブロックを選択できます。~/.ssh/config
。am-on-home-network
ホームネットワークで実行している場合は0を返し、外部で実行すると1を返すスクリプトがあるとします。
Match Host myserver exec "am-on-home-network"
HostName myserver
User iago-lito
Port 22
Host myserver
HostName myserver.ddns.net
User iago-lito
Port 22
の場合をam-on-home-network
使用してローカルネットワークをナビゲートできますarp
。ホームルーターのMACアドレスを探します。 (多くのプライベートネットワークが同じ範囲のプライベートIPアドレスを使用しているため、IPアドレスの検索は信頼できません。)
#!/bin/sh
timeout 0.2 arping -f -q -I eth0 12:34:56:78:9a:bc
MACアドレスを自宅にいるときにコンピュータに表示されるルータのMACアドレスに調整します。eth0
ホームルーターに接続しているコンピューターのネットワークインターフェースを調整します。
純粋なSSH方法の利点は、ユーザーモードで実行できることですが、SSHでのみ機能し、接続設定の遅延が大幅に増加します。より良い解決策は、システムレベルでDNSサーバーを実行し、myserver.ddns.net
ローカルネットワークにいるときにローカルIPアドレスとグローバル名を提供するように構成することです。DNSエンドポイントコンピュータまたは小規模ネットワークで実行するのに適した、小さくシンプルなDNSキャッシュとサーバー。コンピュータでまだDNSキャッシュを実行していない場合は、通常のインターネット使用が少し速くなります。 Ubuntuはデフォルトでdnsmasqを実行します。
/etc/dnsmasq.d/home-server
dnsmasqで次の内容でファイルを作成します。
host-record=myserver.ddns.net,192.168.2.1
ネットワーク起動スクリプト(ディストリビューションのどこにいても)に次のスクリプトを追加します。
#!/bin/sh
comment=\#
if timeout 0.2 arping -f -q -I eth0 12:34:56:78:9a:bc; then
comment=
fi
sed -i "\$s/^#*/$comment/" /etc/dnsmasq.d/home-server
service dnsmasq restart
システムにD-Busを介してDnsmasqが設定されている場合、設定ファイルを編集するのは最善の選択ではなく、動作しているかどうかはわかりません。dbus-send
arpingの出力に応じて、ホストレコードの追加または削除を呼び出す必要があります。またはNetworkManagerを使用している場合は、ホームネットワークに対応する接続にホストエントリを設定するように設定します。