คุณสามารถตรวจสอบสิ่งนี้ด้วยค่าส่งคืน ssh ให้คุณ:
$ ssh -q user@downhost exit
$ echo $?
255
$ ssh -q user@uphost exit
$ echo $?
0
แก้ไข: อีกวิธีหนึ่งคือการใช้ nmap (คุณไม่จำเป็นต้องมีคีย์หรือสิ่งที่เข้าสู่ระบบ):
$ 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)
แต่คุณจะต้อง grep ข้อความ (nmap ไม่ใช้ return-value เพื่อแสดงว่าพอร์ตถูกกรองปิดหรือเปิด)
แก้ไข 2:
หากคุณสนใจสถานะที่แท้จริงของ ssh-port คุณสามารถแทนที่grep open
ด้วยegrep 'open|closed|filtered'
:
$ nmap host -PN -p ssh | egrep 'open|closed|filtered'
เพียงเพื่อให้สมบูรณ์
ssh-keygen
แล้วssh-copy-id
จะมีการเรียกใช้คีย์คู่ในเครื่องท้องถิ่นจากนั้นคัดลอกคีย์สาธารณะไปยังเครื่องระยะไกล ดูเหมือนว่าคุณกำลังทำสิ่งที่แตกต่างออกไป ทำไมเป้าหมายของคุณคืออะไร?