web-dev-qa-db-ja.com

SSHホスト名のIPを見つける方法

コマンドラインのssh設定からHostNameのIPを取得する簡単な方法はありますか?多くの場合、scpを使用する必要があり、マシンに接続したいのですが、覚えているのはHostNameだけです。

10
m33lky

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/

2
Tim Kennedy

コマンドラインで指定された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 }')
9
Lloyd Pique

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というサフィックス)。

1
Bruce Ediger

偽のProxyCommandを使用する...

$ ssh -o 'ProxyCommand echo %h>&2' mYaLiAs 2>&1 | fgrep -v ssh_exchange_id |  read actual
$ echo $actual
192.168.1.234
0
user102331