Linux系統入門學習:如何在Linux上檢查SSH的版本
Question:我想到SSH存在1和2兩個版本(SSH1和SSH2)。這兩者之間有什麼不同?還有我該怎麼在Linux上檢查SSH協議的版本?
安全Shell(SSH)通過加密的安全通訊通道來遠程登入或者遠程執行命令。SSH被設計來替代不安全的明文協議,如telnet、rsh和rlogin。SSH提供了大量需要的特性,如認證、加密、資料完整性、授權和轉寄/通道。
SSH1 vs. SSH2
SSH協議規範存在一些小版本的差異,但是有兩個主要的大版本:SSH1 (版本號碼 1.XX) 和 SSH2 (版本號碼 2.00)。
事實上,SSH1和SSH2是兩個完全不同互不相容的協議。SSH2明顯地提升了SSH1中的很多方面。首先,SSH是宏設計,幾個不同的功能(如:認證、傳輸、串連)被打包進一個單一的協議,SSH2帶來了比SSH1更強大的安全特性,如基於MAC的完整性檢查,靈活的工作階段金鑰更新、充分協商的密碼編譯演算法、密鑰憑證等等。
SSH2由IETF標準化,且它的實現在業界被廣泛部署和接受。由於SSH2對於SSH1的流行和加密優勢,許多產品對SSH1放棄了支援。在寫這篇文章的時候,OpenSSH仍舊支援SSH1和SSH2,然而在所有的現代Linux發行版中,OpenSSH伺服器預設禁用了SSH1。
檢查支援的SSH協議版本方法一
如果你想檢查本地OpenSSH伺服器支援的SSH協議版本,你可以參考/etc/ssh/sshd_config這個檔案。用文字編輯器開啟/etc/ssh/sshd_config,並且查看"Protocol"欄位。
如果如下顯示,就代表格服務器只支援SSH2。
Protocol 2
如果如下顯示,就代表格服務器同時支援SSH1和SSH2。
Protocol 1,2
方法二
如果因為OpenSSH服務其運行在遠端伺服器上而你不能訪問/etc/ssh/sshd_config。你可以使用叫ssh的SSH用戶端來檢查支援的協議。具體說來,就是強制ssh使用特定的SSH協議,接著我麼查看SSH伺服器的響應。
下面的命令強制ssh使用SSH1:
$ ssh -1 user@remote_server
下面的命令強制ssh使用SSH2:
$ ssh -2 user@remote_server
如果遠程SSH伺服器只支援SSH2,那麼第一個帶“-1”的選項就會出現像下面的錯誤資訊:
Protocol major versions differ: 1 vs. 2
如果SSH伺服器同時支援SSH1和SSH2,那麼兩個命令都有效。
方法三
另一個檢查版本的方法是運行SSH掃描工具,叫做scanssh。這個命令列工具在你想要檢查一組IP地址或者整個本網來升級SSH1相容的SSH伺服器時很有用。
下面是基本的SSH版本掃描文法。
$ sudo scanssh -s ssh -n [ports] [IP addresses or CIDR prefix]
"-n"選項可以指定掃描的SSH連接埠。你可以用都好分隔來掃描多個連接埠,不帶這個選項,scanssh會預設掃描22連接埠。
使用下面的命令來發現192.168.1.0/24本網中的SSH伺服器,並檢查SSH協議v版本:
$ sudo scan -s ssh 192.168.1.0/24
如果scanssh為特定IP地址報告“SSH-1.XX-XXXX”,這暗示著相關的SSH伺服器支援的最低版本是SSH1.如果遠程伺服器只支援SSH2,scanssh會顯示“SSH-2.0-XXXX”。
提高Ubuntu的SSH登陸認證速度的辦法
開啟SSH服務讓Android手機遠端存取 Ubuntu 14.04
如何為Linux系統中的SSH添加雙重認證
在 Linux 中為非 SSH 使用者配置 SFTP 環境
Linux 上SSH 服務的配置和管理
SSH入門學習基礎教程
Linux 下 SSH 命令執行個體指南
本文永久更新連結地址: