コマンドラインのssh設定からHostName
のIPを取得する簡単な方法はありますか?多くの場合、scp
を使用する必要があり、マシンに接続したいのですが、覚えているのはHostNameだけです。
scpは~/.ssh/config
および/etc/ssh/ssh_config
を読み取ります。 ssh構成のいずれかのホストエイリアスの名前との間でscpを実行する限り、それは機能するはずです。
それは答えとしてはちょっと短いようですので、ssh設定でできることについての詳細を次に示します...
Ssh構成ファイルの高度な機能のいくつかを説明する投稿を次に示します。 http://magazine.redhat.com/2007/11/27/advanced-ssh-configuration-and-tunneling-we-dont- need-no-stinking-vpn-software /
Ssh/scpをhttpプロキシ経由でトンネルする必要がありますか?問題ありません。ここで説明されている手順を使用してください: http://www.mtu.net/~engstrom/ssh-proxy.php
ProxyCommandオプションの別の使用法: http://jasonmc.wordpress.com/2008/04/16/ssh-magic/
コマンドラインで指定されたHost
引数からssh_config hostname
エントリにマッピングするには、ssh
自体を使用すると簡単です。
実際に接続せずに、コマンドラインの構成に何を使用するかを評価して出力するように要求できます。次に、hostname
にリストされているものを取り出すだけです(構成キーの名前を小文字に変換することで正規化することに注意してください)。簡単な例は次のとおりです。
ssh -G database | awk '/^hostname / { print $2 }'
.ssh/configに以下が含まれている場合:
Host database
Hostname database.example.com
これはdatabase.example.com
を出力します。
Pingを実行するには、もちろん出力を評価して引数として使用できます。
ping $(ssh -G database | awk '/^hostname / { print $2 }')
scp
の場合はその必要はありませんが、ssh
のデバッグトレースを使用できます。
ssh -v HostName ' ' 2>&1 | grep '^debug1: Connecting to'
通常、Host HostName
を実行すると、IPアドレスを取得できます。
Host
がインストールされていない場合は(インストールする必要があります)、nslookup HostName 8.8.8.8
を使用できます。これにより、Google DNSサーバーを使用して検索が行われます。
これらのことを行うには、マシンのリゾルバーが正しい構成(ファイル/etc/resolv.confおよびおそらく/etc/nsswitch.confにある)を持っているか、ホストを完備した「完全修飾ドメイン名」を使用する必要があります。ドマイイン、および「TLD」(。org、.com、.netというサフィックス)。
偽のProxyCommandを使用する...
$ ssh -o 'ProxyCommand echo %h>&2' mYaLiAs 2>&1 | fgrep -v ssh_exchange_id | read actual
$ echo $actual
192.168.1.234