ฉันเชื่อมต่อกับเครื่อง linux (centos 6.4) ใช้ผงสำหรับอุดรู ยกเว้นจากข้อเท็จจริงที่ว่าฉันสามารถตั้งค่า putty ให้ใช้เพียงหนึ่งชนิดของโปรโตคอลฉันจะค้นหารุ่นการเชื่อมต่อ ssh ปัจจุบัน (SSH1 หรือ SSH2) ได้อย่างไร?
ฉันเชื่อมต่อกับเครื่อง linux (centos 6.4) ใช้ผงสำหรับอุดรู ยกเว้นจากข้อเท็จจริงที่ว่าฉันสามารถตั้งค่า putty ให้ใช้เพียงหนึ่งชนิดของโปรโตคอลฉันจะค้นหารุ่นการเชื่อมต่อ ssh ปัจจุบัน (SSH1 หรือ SSH2) ได้อย่างไร?
คำตอบ:
เมื่อคุณอยู่ในที่คุณพูดว่า:
ssh -v localhost
มันจะบอกคุณถึงรุ่นที่แน่นอนของเซิร์ฟเวอร์
ฉันรู้ว่านี่เป็นคำถามเก่า แต่เมื่อฉันเจอมันฉันไม่สามารถต่อต้านการโพสต์วิธีอื่นได้
ตามที่cstamasแนะนำคุณสามารถใช้ssh -v localhost
คุณเพียงแค่ ssh กับตัวเอง 127.0.0.1 ในโหมด verbose ซึ่งจะแสดงข้อความการดีบักของความคืบหน้า ใช่ผ่านกระบวนการนี้คุณสามารถดูด้านบนของการสื่อสารและคุณสามารถรับรุ่น SSH ที่คุณกำลังทำงานอยู่
แต่ถ้าคุณอ่านssh man
หน้านี้คุณจะพบว่า-V
ตัวเลือกใน ssh มีประโยชน์มากกว่า นำหน้า man sshออก:
-V แสดงหมายเลขรุ่นและออก
โหมด v- verbose ทำให้ ssh พิมพ์ข้อความดีบั๊กเกี่ยวกับความคืบหน้า สิ่งนี้มีประโยชน์ในการแก้จุดบกพร่องการเชื่อมต่อการตรวจสอบและปัญหาการกำหนดค่า ตัวเลือก -v หลายตัวช่วยเพิ่มรายละเอียด สูงสุดคือ 3
ดังนั้นฉันคิดว่ามันจะดีกว่าที่จะทำssh -V
และทำสิ่งที่คล้ายกับ:
> ssh -V
OpenSSH_6.6.1p1, OpenSSL 1.0.1e-fips 11 Feb 2013
หวังว่านี่จะช่วยได้
สีโป๊ว ในเซสชั่นเข้าสู่ระบบเลือกปุ่มตัวเลือก "แพ็คเก็ต SSH และข้อมูลดิบ" เลือกไฟล์บันทึกเป็น putty.log ในตำแหน่งที่คุณเลือก ทำการเชื่อมต่อ คุณควรเห็น:
Event Log: Server version: SSH-2.0-OpenSSH_5.3
Event Log: Using SSH protocol version 2
ดูรายละเอียดด้านล่างเกี่ยวกับความหมายของ SSH-2.0
วิธีการอื่น คุณสามารถลองใช้ไคลเอ็นต์ telnet ได้ แต่ชี้ไปที่พอร์ต 22:
telnet test1 22
เมื่อคุณเชื่อมต่อคุณจะเห็น:
ลอง 192.168.144.145 ... เชื่อมต่อกับ test1 ตัวละคร Escape คือ '^]' SSH-2.0-OpenSSH_5.3
บรรทัดสุดท้ายคือบรรทัดที่ต้องค้นหา:
SSH-2.0-OpenSSH_5.3
ถ้ามันบอกSSH-2.0
ว่าเป็นสิ่งที่ดีเซิร์ฟเวอร์ ssh ที่คุณเชื่อมต่อเพื่อรองรับเฉพาะโปรโตคอล SSH เวอร์ชัน 2 จะไม่รองรับการเชื่อมต่อจากไคลเอ็นต์โปรโตคอล SSH V1
ถ้าคุณเห็น:
SSH-1.99-OpenSSH_5.3
จากนั้นหมายความว่าปลายเซิร์ฟเวอร์ยังคงรองรับ SSL Protocol เวอร์ชัน 1 มีsshd_config
ไฟล์ดังนี้:
Protocol 1,2
โพรโทคอล 1 มีความเสี่ยงและไม่ควรใช้
เพื่อให้ตรงนั้น หากคุณเห็น SSH-2 เมื่อคุณ telnet ไปยังพอร์ต 22 ของเซิร์ฟเวอร์ระยะไกลคุณจะสามารถใช้ ssh Protocol รุ่น 2 เท่านั้นเนื่องจากเซิร์ฟเวอร์ไม่รองรับโปรโตคอล 1
ตามคำตอบ cstamas ข้างต้นธง -v จะแสดงบรรทัด:
debug1: Remote protocol version 1.99, remote software version OpenSSH_5.3
หรือ:
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.3
คุณต้องการดูที่version 2.0
นั่น
คุณสามารถรับสิ่งนี้ได้อย่างรวดเร็วโดยใช้ netcat จากเครื่องของคุณตัวอย่างเช่น:
$ nc [IP_ADDRESS] 22
SSH-2.0-OpenSSH_5.3
ฉันชอบสิ่งนี้ดีกว่า:
$ echo ~ | nc localhost 22
SSH-1.99-OpenSSH_3.9p1
Protocol mismatch.
$
ประโยชน์ที่นี่คือมันสามารถทำได้โดยทางโปรแกรมเนื่องจากการเชื่อมต่อไม่ได้เปิดค้างไว้ สำหรับ Python ให้ลอง:
ssh_protocol = float(re.search(r"SSH-(\d.\d+)").group(1))
วิธีเดียวที่ฉันรู้กำหนดว่าใครมีสิทธิ์เพียงพอที่จะดูรายการบันทึก SSH /var/log/auth.log
ใน
$ echo $SSH_CONNECTION
127.0.0.1 12375 127.0.0.1 22
ฟิลด์แรกและฟิลด์ที่สองของSSH_CONNECTION
ตัวแปรระบุ IP ต้นทางและพอร์ตต้นทางของการเชื่อมต่อของฉัน โดยgrep
-ing สำหรับค่าเหล่านั้น/var/log/auth.log
ฉันสามารถค้นหารายการบันทึกจากเมื่อการเชื่อมต่อ ssh ของฉันได้รับการรับรองความถูกต้อง
$ sudo grep -F ' from 127.0.0.1 port 12375 ' /var/log/auth.log | grep ssh
Jun 26 16:29:52 morton sshd[20895]: Accepted keyboard-interactive/pam for jim from 127.0.0.1 port 12375 ssh2
รายการบันทึกนี้บอกฉันว่าการเชื่อมต่อปัจจุบันของฉันกำลังใช้โปรโตคอล ssh2 แน่นอนถ้าเซสชั่น ssh ได้เปิดเป็นเวลาหลายวันรายการบันทึกอาจอยู่ใน/var/log/auth.log.0
หรือบางauth.log
ไฟล์ที่เก่ากว่า