.ssh / configの正規表現


12

職場では、よくqc01- qc12hc01- hc10などの一般的な命名スキームに従うホストにログインする必要があります。これらはすべて、私のラップトップで同じ設定値を取得する必要があります.ssh/config。もちろん、ホストqc*とのエントリを使用することもできますが、hc*代わりに正規表現を使用することが何らかの形で可能かどうか疑問に思っていますか?

回答:




1

で完全な正規表現を使用できますssh_config

関連するドキュメントは、IMOを読んで理解するのが非常に困難です。私が理解しているのは、13年以上のLinuxの経験と8年以上のLinuxの使用経験があるためsshです。だからここにドキュメントの私の要約があります:

  • man ssh_config という機能について説明します Match
  • 次にexec、任意のシェルコマンドを使用して一致を判断できる機能があります
  • 入力パラメータを任意のシェルコマンドに渡すことが可能であり、ラベルの付いたセクションで説明されています TOKENS

私の場合、私は私ので使用することになりました~/.ssh/config

Match exec "echo %h | grep -q 'NAME[0-9]\+$'"
    User USER
    IdentityFile /path/to/identity/file
    Hostname %h.fully.qualified.domain.name

このようなトリッキーなテストを行う必要があります。そして、あなたが呼び出すテストを行うためにssh -vvv HOSTNAME。何が起こっているのか、そして新しいものMatchが正しく実装されているかどうかを正確に示します。


0

Trevorからの答えを拡張する:

より複雑なホストは、マッチングのようなことも可能であるfoo123.123し、foo10.10一つのルールにWITHOUT使用ホスト名のDNSエントリを有します。

Match exec "echo %h | grep -q 'foo[0-9]\+.[0-9]\+$'"
    Port 1234 # just to show it can be paired with non-default ports too,
              # see %p in man ssh_config
    ProxyCommand /usr/bin/nc 10.10.$(echo %h | sed -e 's/foo//') %p

ProxyCommandを使用してシェルで%hのコンテンツを操作し、netcatを介して適切なポートに接続します。これにより、個々のエントリを作成せずに、ホストのカテゴリのプリセットを作成できます。

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