Bạn có thể kiểm tra điều này với giá trị trả về ssh cung cấp cho bạn:
$ ssh -q user@downhost exit
$ echo $?
255
$ ssh -q user@uphost exit
$ echo $?
0
CHỈNH SỬA: Một cách tiếp cận khác là sử dụng nmap (bạn sẽ không cần phải có khóa hoặc nội dung đăng nhập):
$ a=`nmap uphost -PN -p ssh | grep open`
$ b=`nmap downhost -PN -p ssh | grep open`
$ echo $a
22/tcp open ssh
$ echo $b
(empty string)
Nhưng bạn sẽ phải ghi lại thông báo (nmap không sử dụng giá trị trả về để hiển thị nếu một cổng được lọc, đóng hay mở).
EDIT2:
Nếu bạn quan tâm đến trạng thái thực tế của cổng ssh, bạn có thể thay thế grep open
bằng egrep 'open|closed|filtered'
:
$ nmap host -PN -p ssh | egrep 'open|closed|filtered'
Chỉ để được hoàn thành.
ssh-keygen
để tạo một cặp khóa trên máy cục bộ, sau đóssh-copy-id
sao chép khóa công khai sang các máy từ xa. Có vẻ như bạn đang làm mọi thứ khác đi. Tại sao, mục tiêu của bạn là gì?