Làm thế nào để tìm ra ip của một ssh HostName


10

Có cách nào đơn giản để lấy IP của a HostNametừ cấu hình ssh trên dòng lệnh không? Nhiều lần tôi phải sử dụng scpvà muốn kết nối với máy, nhưng tôi chỉ nhớ Tên máy chủ.


1
scp sẽ đọc của bạn .ssh/config/etc/ssh/ssh_config. Có một lý do bạn không thể scp bởi các bí danh được xác định trong cấu hình?
Tim Kennedy

Bạn nên thêm điều này như một câu trả lời. Tôi nghĩ rằng khi tôi thử nó lần đầu tiên, tôi đã không cung cấp chìa khóa hoặc thứ gì đó, vì vậy nó không nhận ra máy chủ.
m33lky

Có vẻ như một chút ánh sáng cho một câu trả lời, nhưng tôi đã thêm nó. cùng với những gì tôi coi là một số đọc ssh config thú vị liên quan.
Tim Kennedy

Câu trả lời:


2

scp sẽ đọc của bạn ~/.ssh/config/etc/ssh/ssh_config. miễn là bạn scp đến / từ tên của một trong các bí danh máy chủ trong cấu hình ssh của bạn, nó sẽ hoạt động.

vì đó dường như là một câu trả lời ngắn gọn, đây là một số thông tin khác với những điều bạn có thể làm với cấu hình ssh của mình ...

Đây là một bài viết mô tả một số tính năng nâng cao của tệp cấu hình ssh: http://magazine.redhat.com/2007/11/27/advified-ssh-configuration-and-tunneling-we-dont-need-no- hôi thối-vpn-phần mềm /

Cần đường hầm ssh / scp thông qua proxy http? không có vấn đề gì, chỉ cần sử dụng các bước được nêu ở đây: http://www.mtu.net/~engstrom/ssh-proxy.php

Một cách sử dụng khác của tùy chọn ProxyCommand: http://jasonmc.wordpress.com/2008/04/16/ssh-magic/


1
Câu trả lời ngắn đến điểm là tuyệt vời. Nếu không thì dễ lạc đề. Bất cứ ai làm đường hầm nên xem xét ssh mực .
m33lky

9

Để ánh xạ từ hostđối số được đưa ra trên dòng lệnh đến hostnamemục nhập ssh_config, thật dễ dàng bằng sshchính nó.

Bạn có thể yêu cầu nó đánh giá và in ra những gì nó sẽ sử dụng cho cấu hình cho một dòng lệnh, mà không thực sự kết nối. Sau đó, bạn chỉ cần rút ra những gì nó liệt kê hostname(Lưu ý rằng nó hợp thức hóa các tên khóa cấu hình bằng cách chuyển đổi chúng thành chữ thường). Một ví dụ đơn giản là:

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

Nếu .ssh / config chứa:

Host database
Hostname database.example.com

Điều này sẽ in ra database.example.com.

Để ping nó, tất nhiên bạn có thể đánh giá đầu ra và sử dụng nó làm đối số:

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

2
đó là các công cụ. câu trả lời chính xác!
heisian


1

Thông thường, bạn có thể làm host HostNamevà bạn sẽ nhận được địa chỉ IP.

Nếu hostkhông được cài đặt (cần phải có), bạn có thể sử dụng nslookup HostName 8.8.8.8máy chủ DNS của Google để thực hiện tra cứu.

Để thực hiện những điều này, trình phân giải của máy của bạn phải có cấu hình chính xác (trong tệp /etc/resolv.conf và có thể /etc/nsswitch.conf) hoặc bạn phải sử dụng "tên miền đủ điều kiện", hoàn chỉnh với máy chủ, domaiin và "TLD" (.org, .com, .net là loại hậu tố).


3
Điều này không tìm kiếm bí danh máy chủ lưu trữ ~/.ssh/config, mà tôi hiểu là điểm của câu hỏi này.
Gilles 'SO- ngừng trở nên xấu xa'

Haha, tôi cũng nhận thấy điều đó ssh HostNamelà một bí danh tùy ý, không phải là một tên miền.
m33lky

Bình luận không dành cho thảo luận mở rộng; cuộc trò chuyện này đã được chuyển sang trò chuyện .
terdon

0

sử dụng ProxyCommand không có thật ...

$ ssh -o 'ProxyCommand echo %h>&2' mYaLiAs 2>&1 | fgrep -v ssh_exchange_id |  read actual
$ echo $actual
192.168.1.234
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.