Có cách nào đơn giản để lấy IP của a HostName
từ cấu hình ssh trên dòng lệnh không? Nhiều lần tôi phải sử dụng scp
và muốn kết nối với máy, nhưng tôi chỉ nhớ Tên máy chủ.
Có cách nào đơn giản để lấy IP của a HostName
từ cấu hình ssh trên dòng lệnh không? Nhiều lần tôi phải sử dụng scp
và muốn kết nối với máy, nhưng tôi chỉ nhớ Tên máy chủ.
Câu trả lời:
scp sẽ đọc của bạn ~/.ssh/config
và /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/
Để ánh xạ từ host
đối số được đưa ra trên dòng lệnh đến hostname
mục nhập ssh_config, thật dễ dàng bằng ssh
chí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 }')
Không cần phải làm điều đóscp
, nhưng bạn có thể sử dụng ssh
dấu vết gỡ lỗi.
ssh -v HostName ' ' 2>&1 | grep '^debug1: Connecting to'
Thông thường, bạn có thể làm host HostName
và bạn sẽ nhận được địa chỉ IP.
Nếu host
không được cài đặt (cần phải có), bạn có thể sử dụng nslookup HostName 8.8.8.8
má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ố).
~/.ssh/config
, mà tôi hiểu là điểm của câu hỏi này.
HostName
là một bí danh tùy ý, không phải là một tên miền.
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
.ssh/config
và/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?