
仕事を完了するために、職場の複数のサーバーにログインする必要があります。アクセスするためにサーバーの FQDN を入力するのにうんざりしています。自分のプライベート ネットワークで ssh 経由でログイン/ログアウトしています。すべてのサーバーの IP アドレスが 10.xyz であるため、自分のプライベート ネットワーク上にあることは 99% 確実です。ドメイン名ではなく、ホスト名だけでサーバーに ssh する方法はありますか?
私たちは複数の国にサーバーを設置しています。私たちのサーバーの名前は非常に長く、次のように命名されています。
hostname.country.domainname.com
入力中に手根管症候群になりそう
ssh [email protected]
... 弊社のサーバーにアクセスするたびに発生します。米国にいて、米国内の別のホストにアクセスしようとすると、入力するだけで問題なく接続できます。ただし、米国にいて、英国のサーバーに接続しようとすると、入力して接続することssh me@hostname2
ができません。ssh [email protected]
hostname3
私が行った回避策は、いくつかのサーバーの ~/.ssh/config ファイルにエイリアスを設定することでした。しかし、そのファイルに 1000 台以上のサーバーを追加するのは現実的ではないと思います。すでに 20 台以上のサーバーを追加しており、同僚は私がおかしいと思っていますが、私も同僚が ssh 時に FQDN を入力するのはおかしいと思っています。
毎回 domainname.com を入力しなくても済むように設定できる簡単な方法はありますか?
答え1
%h
ワイルドカードを使用して設定に使用することができます
例えば
Host *.eng
Hostname %h.domainname.com
今、それを実行すると、ssh foo.eng
に接続しようとしますfoo.eng.domainname.com
。
この設定に他のオプションを追加することもできます。たとえば、ユーザー名を強制するなどです。
Host *.eng
Hostname %h.domainname.com
User me
今、それを実行すると、ユーザーとしてssh foo.eng
接続しようとします。foo.eng.domainname.com
me
% ssh foo.eng
ssh: Could not resolve hostname foo.eng.domainname.com: Name or service not known
(まあ、明らかに、私にとっては有効なホスト名ではないため、エラーが発生します!)
したがって、今では国ごとに 1 つのルールのみが必要になります。
答え2
CanonicalDomains
SSH 設定でオプションを使用できます。
domainname.com
以下の内容を ssh 設定ファイルに追加すると、ssh は名前に最大 1 つのドットが含まれるホストに追加を試みます。
CanonicalizeHostname yes
CanonicalDomains domainname.com
この設定では、ssh foo.eng
は最初に を試行し、ホストが見つからない場合はfoo.eng.domainname.com
にフォールバックします。同様に、 は最初に を試行するため、GitHub に接続する場合、DNS サーバーは存在しないホストのレコードを返さない必要があります。foo.eng
ssh github.com
github.com.domainname.com
をCanonicalizeMaxDots
使用すると、ssh がホスト名を完全修飾と見なし、追加しなくなる前に、ホスト名に表示できるドットの数を制御できますdomainname.com
。デフォルトでは 1 に設定されており、現在使用しているスキームではこれで十分なはずですが、次のような場合は、hostname.city.country
この値を増やす必要があります。
答え3
追加すると
search domainname.com
に/etc/resolv.conf
、 を使用するとhostname.country
、 (そして他のネットワーク プログラムでも) 自動的に1 がssh
追加されます。domainname.com
異なる国のドメインをパスに追加するのは良い考えではないと思います。2search
つの異なる国の2つのサーバーが同じホスト名を共有すると、予期しない動作が発生する可能性があるためです。
この方法は、使用しているプログラム ( 、VNC など)に関係なく解決できるssh
ため、構成を変更するよりも優れていると思います。hostname.country
telnet
1domainname.com
より正確に言うと、それ自体で解決できない場合に追加されますhostname.country
。
2このようなシナリオでは、パスhostname
の最初にドメインがリストされている国のサーバーに解決されますsearch
。