仕事を完了するには、職場で複数のサーバーにログインする必要があります。アクセスするサーバーのFQDNを入力するのに飽きてきました。自分のプライベートネットワークでsshを使用してログイン/ログアウトしています。私はそれが私たち自身のプライベートネットワーク上にあると99%確信していますb/cすべてのサーバーはip addr 10.x.y.zを持っています。ドメイン名ではなくホスト名だけでサーバーにSSHで接続する方法はありますか?
サーバーは複数の国にあります。サーバーの命名方法は非常に長いです。名前は次のとおりです。
hostname.country.domainname.com
手根管にssh [email protected]
を入力しています
...サーバーにアクセスするたび。私が米国にいて、米国にある別のホストにアクセスしようとすると、ssh me@hostname2
と入力するだけで問題なく接続できます。ただし、米国にいて、イングランドのサーバーに接続しようとすると、ssh [email protected]
と入力してhostname3
に接続できません。
私が行った回避策は、一部のサーバーの〜/ .ssh/configファイルにエイリアスを設定することでした。ただし、そのファイルに1000台以上のサーバーを追加することは現実的ではないと思います。私はすでに20台以上のサーバーを追加しており、同僚は私が頭がおかしいと思っていますが、振り回すときにFQDNを入力するのはおかしいと思います。
毎回domainname.comを入力する必要がないように簡単に設定できる方法はありますか?
ワイルドカードを使用して、設定で%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
を実行すると、ユーザーme
としてfoo.eng.domainname.com
に接続しようとします。
% ssh foo.eng
ssh: Could not resolve hostname foo.eng.domainname.com: Name or service not known
(まあ、それは私にとって有効なホスト名ではない前に私は明らかにエラーを受け取ります!)
したがって、今必要なのは国ごとに1つのルールだけです。
追加した場合
_search domainname.com
_
_/etc/resolv.conf
_に変換し、_hostname.country
_を使用すると、ssh
(およびその他のネットワークプログラム)は自動的に_domainname.com
_を追加します1。
2つの異なる国の2つのサーバーが同じホスト名を共有している場合、予期しない動作が発生する可能性があるため、search
パスに異なる国のドメインを追加することはお勧めしません2
使用しているプログラム(ssh
、VNC、...)に関係なく_hostname.country
_を解決できるため、この方法はtelnet
構成を変更するよりも優れていると思います。
1 より正確には、_domainname.com
_をそれ自体で解決できない場合、_hostname.country
_を追加します。
2 このようなシナリオでは、hostname
は、ドメインがsearch
パスの最初にリストされている国のサーバーに解決されます。
Ssh設定でCanonicalDomains
オプションを使用できます。
以下をssh設定ファイルに追加すると、sshは名前に最大1つのドットを含むすべてのホストにdomainname.com
を追加しようとします。
CanonicalizeHostname yes
CanonicalDomains domainname.com
この構成では、ssh foo.eng
は最初にfoo.eng.domainname.com
を試行し、ホストが見つからない場合はfoo.eng
にフォールバックします。同様に、ssh github.com
は最初にgithub.com.domainname.com
を試行するため、GitHubに接続する場合、DNSサーバーは存在しないホストのレコードを返すべきではありません。
CanonicalizeMaxDots
を使用すると、sshが完全修飾と見なしてdomainname.com
を付加しないと見なされる前に、ホスト名に表示できるドットの数を制御できます。デフォルトは1ですが、現在のスキームでは十分ですが、hostname.city.country
のようなものに到達した場合は、それを増やす必要があります。