web-dev-qa-db-ja.com

Ubuntuホスト名から.localサフィックスを削除する方法は?

sshターミナルコマンドを使用してUbuntuデバイスに接続しようとすると、.localサフィックスをUbuntuホスト名に追加する必要があります。たとえば、ホスト名を使用してデバイスにsshする場合、sshコマンドには.localサフィックスが必要で、コマンドの形式は次のとおりです。

ssh username@device_hostname.local 

.local接尾辞がavahi(zeroconf)Linuxサービスによって追加されたことを知っていますが、それをバイパスするための簡単な(簡単な)方法はありますか?次のように、コマンドの最後に.localサフィックスを付けずにホスト名のみでデバイスを「ssh」できるようにしたいと思います。

ssh username@device_hostname

正確に達成したいのは、ホスト名から.localサフィックスを完全に削除することです。プライベートDNSサーバーの実行について読んだことがありますが、それほど複雑でないソリューションがあるかどうか知りたいです。

3
Boixos Noi

クライアントには、ホスト名をIPアドレスに解決するための少なくとも1つの方法が必要です。すでに発見したメカニズムは、自動構成によって機能し、.localドメイン名内で発生します。

すべてのクライアントでホスト名からIPアドレスへのマッピングを定義できますが、これは推奨される方法ではありません。

have何らかの種類の自動名前解決メカニズムを実行する必要があります。これらのメカニズムはすべて、バックグラウンドで何らかの種類のドメイン名を使用する必要があります。

ただし、次のいずれかを実行することにより、毎回ドメイン名を入力する必要がなくなります。

sshホスト名の正規化

以下を/etc/ssh_configまたは~/.ssh/configに入れた場合:

Host *
  CanonicalDomains local
  CanonicalizeHostname yes

sshは、任意のホスト名にlocalを自動的に追加します。したがって、ssh Hostと入力すると、実際にssh Host.localが実行されます。

検索ドメイン

上記はsshに対してのみ機能しますが、クライアントのDNSリゾルバーを適宜設定することにより、すべてのネットワーク接続に対して同様の設定を行うこともできます。これは、ホスト名のショートカットを持つ「古典的な」方法です。

使用しているセットアップに応じて、localを検索ドメインのリストに追加します。これが私がすることです。これについては多くの説明があるはずです like this

/ etc/hostsへのハードコーディング

最初は単純に思えますが、すぐに維持するのが難しくなるため、これはまったくお勧めしません。しかし、ドメイン名を完全に取り除くことができるのは私に知られている唯一の方法です。

ファイル/etc/hostsを編集し、次のような行を追加します。

192.168.1.3 Host3
192.168.1.4 Host4

各行の最初のワードは、対応するホストのIPアドレスです。すべてのクライアントでそれを行う必要があります。その後、ssh Host3を使用できます。バックグラウンドでもドメイン名は使用されません。

1
Sebastian Stark