OpenSSH - ánh xạ bí danh trong ~ / .ssh / config thành địa chỉ IP trong dòng lệnh


9

Có thể truy vấn ~ / .ssh / config trong dòng lệnh không? Giả sử tôi muốn truy xuất địa chỉ IP nào mà bí danh cụ thể trỏ đến trong một chương trình riêng biệt, liệu có thể?

Câu trả lời:


2

Nếu tôi hiểu rằng bạn chỉ muốn trả lại địa chỉ IP, tức là, 192.168.1.1, thì đây là một cách (cực kỳ dễ vỡ) để truy vấn tệp từ dòng lệnh, miễn là bạn có quyền thích hợp để đọc nó bạn .ssh/configluôn có quyền định dạng:

awk '/Host $youralias/ {getline; print $2}' .ssh/config


Tôi chỉ đăng bài này vì tôi muốn hiểu làm thế nào để sử dụng awkđể làm điều này, nhưng rõ ràng kiến ​​thức của tôi là khá hạn chế.


1

Không hoàn toàn chắc chắn những gì bạn đang hỏi ...

Giả sử bạn có bí danh SSH cho 'máy chủ chính' để bạn có thể làm ssh mainserver. Nếu bạn muốn nó cũng hoạt động ping mainserver, bạn cần đặt bí danh /etc/hosts, như vậy:

/ etc / host:

192.168.0.1 comp-one
192.168.0.2 comp-two

192.168.0.20 mainserver

Sau đó, bạn có thể làm ping mainservervà nó sẽ ping 192.168.0.20.


0

Đây là một cách mạnh mẽ hơn để lấy ra HostNamedựa trên Hosttrong .ssh/configtệp.

sshalias()
{
    awk "\$1==\"Host\" {host=\$2} \$1==\"HostName\" && host==\"$1\" {print \$2}" "$HOME/.ssh/config"
}

-1

Tệp bạn đề cập là tệp văn bản, nó chứa tên máy chủ lưu trữ và có thể là địa chỉ IP để xác định các máy bạn kết nối. Tên máy chủ có thể được phân giải thành địa chỉ IP bằng host(1)lệnh. Định dạng khá đơn giản, vì vậy không quá khó để tìm ra những gì trong đó. Lưu ý rằng ký tự đại diện có thể được sử dụng trong tệp (trạng thái của tôi *.fedoraproject.org).

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.