qc01
職場では、 - qc12
、hc01
-hc10
などの一般的な命名スキームに従うホストにログインする必要があることがよくあります。これはすべて私のラップトップで行う必要があります.ssh/config
。もちろん、ホストqc*
とエントリを使用できますが、hc*
正規表現を使用できるかどうか疑問に思います。
答え1
〜のようにガロン宣言されたデフォルト値はssh_config
正規表現をサポートしませんが、次のような他のアプローチを試すことができます。
- Githubの高度なSSH設定- より良い正規表現エンジンがあるかもしれませんが、自分でテストする必要があります。
- いくつかの回避策:unix.stackexchangeに関する別の質問
答え2
でこれを行うことができますssh_config
。
IMO関連文書は読みやすく理解しにくい。私は13年以上の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
正しく実装されているかどうかが表示されます。
答え3
PATTERNS
のセクションを参照してくださいman ssh_config
。
ssh
長い答えは次のとおりです。これをサポートするためにパッチを適用しなければできません。
答え4
Trevorの答えを拡張すると、次のようになります。
foo123.123
マッチングやfoo10.10
1つのルールなど、より複雑なホストも可能です。いいえ使用されたホスト名を含む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を介して正しいポートに接続されます。これにより作成できます。基本ホストカテゴリに対して別々のエントリを作成する必要はありません。