ドメイン名なしで内部的にホスト名を介してサーバーにSSHとして接続する方法は?

ドメイン名なしで内部的にホスト名を介してサーバーにSSHとして接続する方法は?

作業を完了するには、職場で複数のサーバーにログインする必要があります。アクセスしようとしているサーバーのFQDNを入力するのに疲れました。私たちのプライベートネットワークでSSH経由でログイン/アウトしています。私はそれが私たち自身のプライベートネットワークにあると99%確信しています。 b / cすべてのサーバーのIPアドレスは10.xyzです。ドメイン名の代わりにホスト名のみを使用してサーバーにSSHとして接続する方法はありますか?

私たちは複数の国にサーバーを持っています。私たちのサーバー命名方式は非常に長いです。次のように名前が付けられます。

hostname.country.domainname.com

手首トンネルができますね。 ssh [email protected]

...私たちのサーバーの1つにアクセスするたびに。アメリカにいてアメリカにいる他のホストにアクセスしようとすると、入力するだけでうまく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.engfoo.eng.domainname.comme

% ssh foo.eng
ssh: Could not resolve hostname foo.eng.domainname.com: Name or service not known

(まあ、有効なホスト名ではない前にエラーが発生したようです!)

したがって、国ごとに1つのルールしか必要ありません。

答え2

CanonicalDomainsSSH設定でこのオプションを使用できます。

domainname.comSSH設定ファイルに以下を追加すると、SSHは名前に最大1つのドットを含むホストに接続しようとします。

CanonicalizeHostname yes
CanonicalDomains domainname.com

この設定を使用すると、最初に試してからssh foo.engホストが見つからない場合に置き換えfoo.eng.domainname.comられます。foo.engもう一度言いますが、これがssh github.com最初に試みられるため、github.com.domainname.comGitHubに接続したい場合は、DNSサーバーは存在しないホストのレコードを返すべきではありません。

CanonicalizeMaxDotssshは、ホスト名が完全であると見なし、追加しない前にホスト名に表示できる点数を制御するために使用できますdomainname.com。デフォルトは1で、現在のシナリオを考慮すると十分ですが、同様の状況が発生した場合はhostname.city.country増やす必要があります。

答え3

追加すると

search domainname.com

/etc/resolv.conf、および使用(hostname.countryおよびsshその問題に対する他のWebプログラム)は自動的にdomainname.com1追加します。

search異なる2つの国の2つのサーバーが同じホスト名を共有している場合、予期しない動作が発生する可能性があるため、パスに別の国のドメインを追加するのは良い考えではないと思います。

私はこの方法がどのプログラム(VNC、...)を使用しても問題を解決できるsshので、設定を変更するよりも優れていると思います。hostname.countrytelnet

バラよりresolv.conf(5)


独自に解析domainname.comできない場合は、1がより正確に追加されます。hostname.country

2この場合、hostnameルートはドメインが最初にリストされている国のサーバーとして解決されますsearch

関連情報