bagaimana cara mengetahui ip dari HostName ssh

10

Apakah ada cara sederhana untuk mengambil IP dari HostNamekonfigurasi ssh pada baris perintah? Banyak kali saya harus menggunakan scpdan ingin terhubung ke mesin, tetapi saya hanya ingat HostName.

m33lky
sumber
1
scp akan membaca .ssh/configdan /etc/ssh/ssh_config. apakah ada alasan Anda tidak bisa scp oleh alias yang didefinisikan dalam konfigurasi?
Tim Kennedy
Anda harus menambahkan ini sebagai jawaban. Saya pikir ketika saya mencobanya pertama kali, saya tidak memberikan kunci atau sesuatu, jadi itu tidak mengenali tuan rumah.
m33lky
tampaknya sedikit ringan untuk sebuah jawaban, tetapi saya menambahkannya. bersama dengan apa yang saya anggap sebagai beberapa bacaan ssh config terkait menarik.
Tim Kennedy

Jawaban:

2

scp akan membaca ~/.ssh/configdan /etc/ssh/ssh_config. selama Anda scp ke / dari nama salah satu alias host di konfigurasi ssh Anda, itu seharusnya berfungsi.

karena itu sepertinya agak pendek untuk menjadi jawaban, inilah beberapa info lebih lanjut dengan hal-hal yang dapat Anda lakukan dengan konfigurasi ssh Anda ...

Berikut adalah pos yang menjelaskan beberapa fitur lanjutan dari file konfigurasi ssh: http://magazine.redhat.com/2007/11/27/advanced-ssh-configuration-and-tunneling-we-dont-need-no- stinking-vpn-software /

Perlu melakukan tunnel ssh / scp melalui proxy http? tidak masalah, cukup gunakan langkah-langkah yang diuraikan di sini: http://www.mtu.net/~engstrom/ssh-proxy.php

Penggunaan lain dari opsi ProxyCommand: http://jasonmc.wordpress.com/2008/04/16/ssh-magic/

Tim Kennedy
sumber
1
Jawaban singkat to-the-point sangat bagus. Kalau tidak mudah untuk keluar topik. Siapa pun yang melakukan tunneling harus melihat sshuttle .
m33lky
9

Untuk memetakan dari hostargumen yang diberikan pada baris perintah ke hostnameentri ssh_config mudah digunakan ssh.

Anda dapat memintanya untuk mengevaluasi dan mencetak apa yang akan digunakan untuk konfigurasi untuk baris perintah, tanpa benar-benar terhubung. Maka Anda hanya perlu mencabut untuk apa daftar itu hostname(Perhatikan bahwa itu mengkanoniskan nama kunci konfigurasi dengan mengubahnya menjadi huruf kecil). Contoh sederhana adalah:

ssh -G database | awk '/^hostname / { print $2 }'

Jika .ssh / config berisi:

Host database
Hostname database.example.com

Ini akan dicetak database.example.com.

Untuk melakukan ping, tentu saja Anda dapat mengevaluasi output dan menggunakannya sebagai argumen:

ping $(ssh -G database | awk '/^hostname / { print $2 }')
Lloyd Pique
sumber
2
itu barangnya. jawaban bagus!
heisian
1

Biasanya, Anda bisa melakukannya host HostNamedan Anda akan mendapatkan alamat IP.

Jika hosttidak diinstal (seharusnya), Anda dapat menggunakan nslookup HostName 8.8.8.8yang akan menggunakan server DNS Google untuk melakukan pencarian.

Untuk melakukan hal-hal ini, penyelesai mesin Anda harus memiliki konfigurasi yang benar (dalam file /etc/resolv.conf dan mungkin /etc/nsswitch.conf) atau Anda harus menggunakan "nama domain yang memenuhi syarat", lengkap dengan host, domaiin, dan "TLD" (.org, .com, .net sufiks semacam itu).

Bruce Ediger
sumber
3
Ini tidak mencari alias host ~/.ssh/config, yang saya pahami sebagai inti dari pertanyaan ini.
Gilles 'SANGAT berhenti menjadi jahat'
Haha, aku juga memperhatikan itu. ssh HostNameadalah alias sewenang-wenang, bukan nama domain.
m33lky
Komentar bukan untuk diskusi panjang; percakapan ini telah dipindahkan ke obrolan .
terdon
0

gunakan ProxyCommand palsu ...

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