sshホスト名リクエストの最後にドメインを追加するようにUbuntuを設定できますか?


9

私は多くのサーバーを持っており、それらはすべて同じservers.company.netで終わるので、たとえばvded-xx-001.servers.company.netであり、それを作成してvded- xx-001に、servers.company.netを自動的に追加させますか?

だから私は入力したいと思います

ssh user@vded-xx-001

実際に接続してもらいます

ssh user@vded-xx-001.servers.company.net

DNS検索ドメインを/ etc / network / interfacesのservers.company.netに設定しようとしましたが、これは望ましい結果になりませんでした。

誰かが私を正しい方向に向けることができますか?

前もって感謝します


search company.net/etc/resolv.confに追加できない理由はありますか?
Hennes 2013

@Hennes resolv.confへの検索company.netおよびservers.company.netの追加が機能しました。ただし、ファイルの上部に、変更が上書きされるという警告が表示されます。この場合、変更を永続的にするにはどうすればよいですか。
Tim Lassie Freeborn 2013

1
私は、余分な担当者であること及びレーキの回答が大好きだが、この記事では、すでに非常によくそれに答えます:-) askubuntu.com/questions/157154/...
ヘネス

実際、その質問で説明されていることとは逆に、通常は/etc/network/interfacesdns-searchオプションを使用して)またはNetworkManager接続構成フィールドに検索ドメインリストを含めるのが最善Search domainsです。
jdthood 2013

ローカルのリゾルバー構成をいじるよりも、このソリューションの方が単純で移植性があります。
OrangeDog 2018

回答:


19

おそらくあなたはすでにこれを解決しましたが、多分後でそれは誰かを助けることができます:resolv.confを使用する必要はなく、〜/ .ssh / configで次のようなものを使用できます:

Host vded-*-001 test-*-something-fixed-*
        HostName %h.servers.company.net
        User someusername

したがって、後で使用できます。

ssh vdev-alotofstuff-001
ssh vdev-somethingels-001
ssh test-02-something-fixed-somethingelse

よろしく、


これは受け入れられる答えになるはずです。
slm 2018

これは問題を解決する方法ですが、システム全体の名前解決の問題を解決するのではなく、sshホスト名の問題のみを解決します。私にとってのベストプラクティスは、システム全体で適切なホスト名を取得でき、特定のホスト名を解決できるように特定のサービス(ssh)をカスタマイズする必要がないことです
Philippe Gachoud

1
忘れてしまったので後でもう一度調べますが、同じ構成を共有しながら短い名前と長い名前の両方を許可する場合は、最初のエントリをHost vded-*.servers.company.netで指定しますHostname %h。そして、第二エントリ内Host vded-*Hostname %h.servers.company.netし、ユーザ等IdentityFileに、のような他のすべてのparams
bksunday

6

これが最も簡単な解決策です。すべてのホストで機能し、ルートやDNS /リゾルバーシステムへのアクセスは必要ありません。

~/.ssh/configファイルの先頭に追加します(または、ファイルが存在しない場合は作成します)。

CanonicalizeHostname yes
CanonicalDomains servers.company.net

ドキュメント(man 5 ssh_config):

CanonicalizeHostname

明示的なホスト名の正規化を実行するかどうかを制御します。デフォルトのnoでは、名前の書き換えは行われず、システムリゾルバーがすべてのホスト名の検索を処理します。yesに設定すると、ProxyCommandを使用しない接続の場合、sshは、CanonicalDomainsサフィックスとCanonicalizePermittedCNAMEsルールを使用して、コマンドラインで指定されたホスト名を正規化しようとします。CanonicalizeHostnamealwaysに設定されている場合は、プロキシ化された接続にも正規化が適用されます。

このオプションを有効にすると、構成ファイルは新しいターゲット名を使用して再度処理され、一致するHostスタンザとMatchスタンザの新しい構成がすべて取得されます。


私には最適です。CanonicalDomainsを追加する必要はなく、最初の行だけを追加します。これにより、他のネットワークに接続している場合でも機能します。
Adam Wallner、2018

2
それ@AdamWallnerあなたは追加しないでくださいCanonicalDomains、それ意志だけで、現在のネットワークの検索ドメインに関する作業。その場合(および複数をリストすることができます)、接続するすべてのネットワークで、これらのホスト名すべてを解決するために機能します。
OrangeDog 2018

2

はい、これを行う~/.ssh/configには、という名前の設定ファイルを作成し、次の内容を入力します。

Host vded-xx-001
User user
Port 22
HostName vded-xx-001.servers.company.net

これを入力するだけです(ユーザー名は不要です):

$ ssh vded-xx-001

これはコマンドラインユーティリティでも機能しますscp

$ scp filename vded-xx-001:/path/

これは個々のホストで機能することは承知していますが、何百もあり、VDED- *を選択するルールを作成して、ホスト名でhost.servers.company.netを実行することを望んでいました
Tim Lassie Freeborn

1
@TimLassieFreeborn:構成ファイルに必要なエントリを生成するスクリプトを記述できます。ただし、動的に実行できるかどうかはわかりません。
Flimm 2013

@TimLassieFreeborn 私の答えを
OrangeDog

2

私の問題の解決策は、検索ドメインをに追加することでしたresolv.conf

search servers.company.net

これは私が入ることを可能にしました

ssh user@vded-xx-001

私のサーバーのいずれかとそれが正しいアドレスに接続します。

回答をありがとう@Hennes


2
Ubuntu 12.04以降を実行している場合は、/ etc / resolv.confを直接編集しないでください。resolvconfユーティリティがそのファイルを生成するためです。(実際には、/ etc / resolv.confがシンボリックリンクである/run/resolvconf/resolv.confを生成します。)代わりに、ifupまたはNetworkManagerのいずれかで、インターフェース構成を介してDNS設定を構成する必要があります。Ifup:/ etc / network / interfacesを編集dns-search servers.company.netして、マシンの外部ネットワークインターフェイスの行をスタンザに追加します。NM:接続の[IPv4]タブのフィールドに追加servers.company.netSearch domainsます。
jdthood 2013

/etc/resolv.confがシンボリックリンクでない場合は../run/resolvconf/resolv.conf、実行sudo dpkg-reconfigure resolvconfしてシンボリックリンクを復元します。
jdthood 2013

1

あなたがSSH IDを使用している場合-そしてそれだけの価値がある多くのサーバーがある場合-OrangeDogが言ったようにCanonicaliseHostnameとCanonicaliseDomainsを設定すると、既知のホストの@ cert-authorityエントリとの一致も有効になります

known_hostsエントリ@ cert-authority * .example.com ssh-rsa AAAddadfkjaeio ...

Canonicaliseオプションがない場合は、「ssh host.example.com」を使用する必要があります

Canonicaliseオプションを使用すると、「ssh myhost」が一致します。

担当者が許可した場合、これをOrangeDogsの回答へのコメントとして追加しました...


0

さまざまなプログラムで機能する簡単な解決策として、次のような行を含めるようにvded-xx-001編集/etc/hostsして、特定のIPアドレスにリダイレクトするようにドメインを設定することもできます。

173.194.41.90  vded-xx-001

これはあなたのブラウザで動作します: http://vded-xx-001/

SSHのようなコマンドラインユーティリティと同様:

$ ssh user@vded-xx-001

(私は個人的にはSSH構成ソリューションを好みます。)


0

システム全体のドメイン名解決のために、私は自分のネットワークで一度設定するのが好きです。私は、DHCPサーバーで設定したと思いますので、ドメイン名とDNSサーバーは、それはすべてのマシンに権利与えることをresolv.conf含むが

  • プライマリDNSサーバーIP
  • ドメイン
  • 検索ディレクティブ

これは、DHCPサーバーと必要なネットワーク構成に依存します...私は個人的には、ネットワークに一般的なものであるマシンのカスタム構成は好きではありません

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.