公開されたシステムがあります(例:server1。foo.bar)個人的に解析できます(例:server1)。内部.foo.bar)DNS名。 SSH接続はプライベートIPを介してのみ可能ですが、私は常に公開名に基づいてこれらのホストを検討しています。
私の考えでは:
*.internal.bar
パターンの使用を覚えているかどうかに関係なく、正しいIPに接続します。- キー入力を保存
わかりました代替タグこれは%h
、コマンドラインで指定されたホスト名を変更するために使用できます。
Host foo
Hostname %h.some.other.domain
私が探している行動は次のとおりです。
Host *.foo.bar
Hostname %m.internal.foo.bar
ここでは、%m
指定されたホスト名で部分のみを置き換えます。最初のポイントまで。私もman 5 ssh_config
読んだhttps://man.openbsd.org/ssh_configそして答えが見つかりません(存在する場合)。私はmacOS 10.15.4を使用しています:
$ ssh -V
OpenSSH_8.1p1, LibreSSL 2.7.3
ベストアンサー1
私は働く方法を見つけました。少し醜いが動作します。これはProxyCommand
ディレクティブを使用します(参照:マンページ)小さなbashヘルパースクリプトと組み合わせた。
- 次のセクションを追加してください。~/.ssh/config— 再マップするドメインごとに 1 つずつ:
Match final host="!*.corp.foo.com,*.foo.com"
ProxyCommand ssh_ext2int %h %p
Match final host="*.quux.biz"
ProxyCommand ssh_ext2int %h %p
$PATH
どこかに保存してください。ssh_ext2int——そしてchmod u+x
それは:
#!/usr/bin/env bash
[ $# -eq 2 ] || exit 1
typeset -A dmap
dmap=(
[foo.com]=corp.foo.com
[quux.biz]=internal.qux.lan
)
d=${1#*.}
h=${1%%.*}
nd=${dmap[$d]:-$d}
/usr/bin/nc -w 120 $h.$nd $2 2>/dev/null
これssh server158247.quux.biz
で次に接続します。server158247.internal.qux.lan