■江蘇 陳滬娟
現(xiàn)在SSH協(xié)議主要有哪些版本號?請問怎樣查看SSH協(xié)議的版本號?
答:現(xiàn)在主要有SSH 1.x和SSH 2.x這兩個版本,而且它們之間相互不能兼容。也就是說,用SSH 2.x的客戶程序是無法連接到SSH 1.x的服務程序上去的。在Linux系統(tǒng)環(huán)境下,查看SSH協(xié)議版本命令一般為“#ssh-V”;例如,在Linux系統(tǒng)的“$”提示符下,輸入“ssh-V”命令后,如果返回“ssh:SSH Secure Shell 2.x on i686-pc-linux-gnu”信息,那就表示Linux系統(tǒng)目前使用的是SSH2。
值得注意的是,Linux系統(tǒng)默認內(nèi)置的是OpenSSH協(xié)議程序。倘若查看本地OpenSSH服務器支持的SSH協(xié)議版本,大家可以訪問“/etc/ssh/sshd_config”這個文件。用文本編輯器打開這個文件,同時查看其中的“Protocol”字段。要是顯示有“Protocol 2”關鍵字信息,就表示服務器只支持SSH2。要是顯示有“Protocol 1,2 ”關鍵字信息,就表示服務器同時支持SSH1協(xié)議和SSH2協(xié)議。
SSH協(xié)議、SSL協(xié)議都屬于安全協(xié)議,它們相互之間有關系嗎?
答:沒有關系!SSH協(xié)議是芬蘭一家公司提出的,SSL協(xié)議是網(wǎng)景公司提出的,前面一種協(xié)議只是加密的shell,最初是用來替代telnet的,后面一種協(xié)議是基于Web應用的安全協(xié)議。
請問SSH協(xié)議的客戶端程序和服務端程序各有什么作用?
答:客戶端程序主要負責遠程拷貝、遠程登陸、安全文件傳輸?shù)炔僮鳎斩顺绦蚴且粋€守護進程,它在系統(tǒng)后臺運行,同時響應來自客戶端的連接請求,它提供了對遠程連接的處理,具體包括非安全連接、密鑰交換、公共密鑰認證、對稱密鑰加密等。
不同版本的SSH協(xié)議在功能上各有什么區(qū)別?
答:SSH1協(xié)議版本又分為1.3和1.5兩個版本,該版本采用DES、3DES、Blowfish和RC4等對稱加密算法保護數(shù)據(jù)安全傳輸,而對稱加密算法的密鑰是通過非對稱加密算法來完成交換的。SSH1使用循環(huán)冗余校驗碼來保證數(shù)據(jù)的完整性,不過這種方法有明顯缺陷。SSH1協(xié)議版本用數(shù)字簽名算法和Diffie-Hellman算法代替非對稱加密算法來完成對稱密鑰的交換,并修補了循環(huán)冗余校驗碼的缺陷。此外,SSH2還增加了AES和Twofish等對稱加密算法。
SSH協(xié)議的安全認證原理是什么?
答:從客戶端系統(tǒng)來說,SSH協(xié)議支持兩種安全認證方式,一種是基于口令的安全認證方式,另外一種是基于密匙的安全認證方式。其中,前面一種認證方式只要知道賬號和密碼,就能登錄到遠程服務器中,但是這種認證方式仍然會受到“中間人”的攻擊,因為用戶無法知道自己遠程訪問的服務器,就是自己想要連接的服務器,或許會有別人在冒充真正的服務器。后面一種認證方式可以避免“中間人”攻擊,因為這種認證方式需要用戶事先創(chuàng)建一對密匙,同時將公用密匙放在需要遠程連接的服務器上,當用戶自己要訪問SSH服務器時,客戶端程序就會向服務器發(fā)出請求,請求用自己的密匙來安全認證,接收到請求信息后,服務器會從本地系統(tǒng)自動搜索公用密匙,之后將它和接收到的公用密匙進行比較,要是兩個密匙內(nèi)容相同,那么服務器就用公用密匙加密“質(zhì)詢”,同時將它發(fā)送給客戶端程序,客戶端程序收到“質(zhì)詢”后,就能用私人密匙解密再將它傳輸給服務器。
為了預防惡意用戶有足夠的時間將中途截獲的公有密鑰破解,OpenSSH 1.x版本默認規(guī)定,遠程主機使用的公有密鑰會在間隔1小時后自動再生。請問有沒有辦法修改時間間隔,讓遠程主機使用的公有密鑰不進行再生?
答:當然有辦法!只要打開OpenSSH服務器的配置文件“/etc/ssh/sshd_config”,將其中的“KeyRegenetationlnterval”選項數(shù)值設置為“0”,將再生時間間隔設置為“0”,就能讓遠程主機使用的公有密鑰不進行再生。當然,“/etc/ssh/sshd_config”文件中還包含其他一些配置選項,通過合理配置與定義,能夠調(diào)整客戶端程序的工作方式。該文件中的每一行都包含“關鍵字——值”的匹配,其中的關鍵字是可以忽略大小寫的。
相比TELNET、FTP等傳統(tǒng)協(xié)議程序,為什么說SSH協(xié)議連接程序是相對安全的?
答:這是由于TELNET、FTP之類的傳統(tǒng)協(xié)議程序在網(wǎng)絡環(huán)境中傳輸數(shù)據(jù)時,是以明文形式進行的,惡意用戶很容易竊取口令和賬號之類的隱私數(shù)據(jù)。同時,這些協(xié)議程序的安全驗證方式也有致命弱點,十分容易受到“中間人”攻擊。這里的“中間人”攻擊方式,指的是“中間人”冒充真正主機接收用戶傳給主機的數(shù)據(jù),再冒充用戶自己將數(shù)據(jù)傳給真正的主機,主機和用戶之間的數(shù)據(jù)傳送被“中間人”轉(zhuǎn)手后,就可能出現(xiàn)安全問題。
而SSH協(xié)議程序在傳輸數(shù)據(jù)的時候,是以加密形式進行的,“中間人”攻擊方式無法輕易實現(xiàn),所以SSH協(xié)議程序可以替代傳統(tǒng)協(xié)議程序,為數(shù)據(jù)傳輸提供一個相對安全的“通道”。當然,SSH協(xié)議程序在傳輸數(shù)據(jù)的過程中,還支持數(shù)據(jù)壓縮功能,該功能可以大大提升數(shù)據(jù)傳輸速度。
生成SSH的密匙對,主要是出于什么考慮?在Linux系統(tǒng)中創(chuàng)建用戶自己的密匙對時,該如何操作?該協(xié)議的加密通道是通過什么形式來實現(xiàn)的?
答:因為SSH的密匙對有兩個方面的作用:一是能只用一個密碼就登錄到所有用戶想訪問的服務器系統(tǒng)中;二是能夠有效預防“中間人”這種攻擊方式。倘若Linux系統(tǒng)使用的是SSH 1.x版本,那么只要使用“ssh-keygen”命令即可,倘若Linux系統(tǒng)使用的是SSH 2.x版本,那么一定要執(zhí)行“ssh-keygen-d”命令,才能創(chuàng)建用戶自己的密匙對。
該協(xié)議的加密通道是通過端口轉(zhuǎn)發(fā)形式來實現(xiàn)的。用戶可以在本地端口和在遠程服務器上運行的某個服務端口之間建立加密通道,日后只要連接到本地端口,所有對本地端口的訪問請求,都會被SSH協(xié)議程序自動加密同時轉(zhuǎn)發(fā)到遠程服務器的端口。只是遠程服務器中的SSH服務端程序啟動的時候,加密通道才能正常工作。
在使用SSH協(xié)議與遠程服務器www.aaa.com成功建立連接后,如何使用“scp”命令將本地主機當前目錄下的“123”文件,復制到遠程服務器的家目錄中,假設用戶在遠程服務器上的帳號名為“bbb”?
答:很簡單!只要輸入“scp 123 www.aaa.com">bbb@www.aaa.com:.”命令即可。如果要將“123”文件從遠程服務器中復制回來,只要輸入“scp www.aaa.com:123">bbb@www.aaa.com:dumb .”命令即可?!皊cp”命令在實際傳輸文件時,會先調(diào)用SSH協(xié)議連接登錄遠程服務器,然后執(zhí)行文件復制傳輸操作,最后調(diào)用SSH服務關閉遠程服務連接。
在進行SSL協(xié)議連接時,有時會出現(xiàn)“密碼正確,但不能連接”之類的錯誤提示,請問這是怎么回事?
答:很可能是因為用戶使用了“root”賬號登錄,而服務器沒有開啟“root”賬號登錄ssh的權(quán)限。此時不妨編輯修改“/etc/ssh/sshd_config”文件,將其中的關鍵字“PermitRootLogin no”調(diào)整為“PermitRootLogin yes”即可。
請問怎樣在Linux系統(tǒng)中,啟用“22”服務端口?
答:由于“22”端口是系統(tǒng)的SSH服務使用的,只要啟動運行該系統(tǒng)服務,就能達到開啟該端口目的了。在開啟該系統(tǒng)服務時,只要執(zhí)行命令“/etc/init.d/sshd start”即可。接著輸入“netstat-antulp|grep ssh”命令查看相關信息,就能知道目標端口是否正常打開了。
不知OpenSSH程序有幾種配置方式?它們各自的優(yōu)先級有什么不同?
答:OpenSSH程序支持系統(tǒng)級的配置文件、用戶配置文件和命令行參數(shù)這三種配置方式,其中系統(tǒng)配置文件的優(yōu)先級低于用戶配置文件,用戶配置文件優(yōu)先級低于命令行參數(shù)。由于在安裝OpenSSH程序的時候,沒有缺省的用戶配置文件,我們必須將“/etc/ssh/ssh_config”文件復制并重新命名為“~/.ssh/config”。
在同一臺Linux系統(tǒng)主機中,是否可以允許SSH 1.x和SSH 2.x這兩個版本密匙對同時存在?
答:當然允許!因為無論哪個版本的密匙對,都是以文件形式存在的,而SSH 1.x和SSH 2.x這兩個版本密匙對,其實對應著兩個不同的文件,所以它們可以同時存在。
請問Linux系統(tǒng)在缺省狀態(tài)下,會將SSH協(xié)議的公用密匙和私人密匙分別存儲在什么路徑?
答:公用密匙在缺省狀態(tài)下,會被存儲到“/home/account/.ssh/id_dsa.pub”路徑,私人密匙在缺省狀態(tài)下,會被存儲到“/home/account/.ssh/id_dsa”,這里的“account”為登錄Linux系統(tǒng)的特定用戶賬號名稱。其中,用戶必須要好好保護私人密匙,謹防別人知道,公用密匙要分發(fā)到用戶自己想訪問的遠程服務器主機中去。
當用戶初次使用SSH協(xié)議訪問遠程服務器時,會看到無法找到主機密鑰的提示內(nèi)容,請問這時該如何操作?
答:只要輸入“yes”后,Linux系統(tǒng)會自動將遠程服務器的密鑰添加到用戶主目錄下的“.ssh/hostkeys”下,這樣用戶就能繼續(xù)操作了。
能否談談SSH連接、VPN連接各自的適應環(huán)境?
答:要是想通過網(wǎng)址快速切換加密和普通網(wǎng)絡,建議使用SSH協(xié)議連接,因為VPN連接必須通過斷線和重連方式來實現(xiàn),速度很慢很麻煩;要是用戶僅僅是臨時性需要使用加密連接,建議使用SSH協(xié)議連接;要是用戶使用的軟件沒有設置代理功能,建議使用VPN連接;要是用戶在一個企業(yè)環(huán)境中,企業(yè)內(nèi)已經(jīng)部署了VPN服務器,企業(yè)外使用普通網(wǎng)絡,或全部使用VPN網(wǎng)絡,建議使用VPN連接。
要分發(fā)SSH協(xié)議的公用密匙時,該怎么操作?
答:首先以系統(tǒng)管理員權(quán)限登錄需要用SSH連接的遠程服務器,進入自己的家目錄,然后創(chuàng)建一個名稱為“.ssh”的子目錄。接著將自己的公用密匙“identity.pub”文件復制到“.ssh”的子目錄下,同時將其重命名為“authorized_keys”。之后執(zhí)行“chmod 644.ssh/authorized_keys”命令,確保除了用戶自己之外別人對“authorized_keys”文件沒有寫入操作權(quán)限。
當SSH協(xié)議連接遇到故障時,用戶常常需要通過查看調(diào)試信息,來準確定位這些錯誤原因。請問在Linux系統(tǒng)環(huán)境下,如何查看SSH協(xié)議的調(diào)試信息?
答:可以執(zhí)行“ssh-v”命令查看SSH協(xié)議的調(diào)試信息。
假設某局域網(wǎng)使用H3C設備作為SSH服務器,如果交換機沒有開啟SSH服務器功能,那么普通用戶將無法以SSH連接遠程登錄交換機。請問如何檢查SSH服務器端有沒有開啟SSH服務?
答:很簡單!只要在交換機后臺系統(tǒng)的全局視圖模式下,執(zhí)行“display ssh server status”命令,就能查看到SSH服務器端的工作狀態(tài),如果命令返回SSH服務器的狀態(tài)為“Disable”,那說明交換機還不支持SSH服務器功能。此時,不妨執(zhí)行“ssh server enable”命令,重新開啟交換機后臺系統(tǒng)的SSH服務器功能。
在Linux系統(tǒng)主機上安裝好SSH軟件包后,SSH服務默認不會自動啟動,請問如何啟動運行該服務?
答:只要在系統(tǒng)命令行中執(zhí)行“service sshd start”命令即可,當然也可以輸入“/etc/init.d/sshd start”,這兩種命令都能啟動運行SSH服務。
有一臺Linux系統(tǒng)主機位于單位內(nèi)網(wǎng)中,請問外網(wǎng)用戶有沒有辦法通過SSH協(xié)議連接,與之建立遠程訪問連接呢?
答:可以借助開放的nat123端口映射網(wǎng)絡輔助工具來實現(xiàn)該連接目的。首先在內(nèi)網(wǎng)環(huán)境使用域名綁定目標Linux系統(tǒng)主機。接著在內(nèi)網(wǎng)環(huán)境安裝并啟用nat123端口映射工具,通過該工具手工添加端口映射,使用非網(wǎng)站的其他應用。將其中的內(nèi)網(wǎng)端口設置為SSH訪問端口“22”,將外網(wǎng)訪問端口自定義為其他沒有使用到的空閑端口,單擊“確認保存”按鈕后結(jié)束端口映射操作。之后SSH協(xié)議使用域名加端口的方式,與Linux系統(tǒng)主機建立映射連接,連接成功后就能正常訪問到內(nèi)網(wǎng)系統(tǒng)中的內(nèi)容了。
眾所周知,SSH服務在缺省狀態(tài)下使用“22”端口,請問有沒有辦法將該端口修改成其他號碼,以躲避惡意用戶的攻擊?
答:答案是肯定的!只要使用“vi/etc/ssh/sshd.config”命令,編輯SSH協(xié)議的配置文件,找到“port”關鍵字,將其后面默認的數(shù)字“22”修改成其他陌生的數(shù)字即可。
為實現(xiàn)SSH協(xié)議的安全連接,請問服務器端程序與客戶端程序相互通信時,要經(jīng)歷哪些階段?
答:主要經(jīng)歷五個階段:一是版本號協(xié)商階段,該階段通信雙方通過版本協(xié)商確定使用的版本;二是密鑰和算法協(xié)商階段,該階段通信雙方根據(jù)本端和對端支持的算法,協(xié)商出最終使用的算法;三是認證階段,SSH客戶端向服務器端發(fā)起認證請求,服務器端對客戶端進行認證;四是會話請求階段,該階段客戶端程序會向服務器端程序發(fā)送會話請求;五是交互會話階段,該階段服務器端和客戶端程序進行數(shù)據(jù)的交互。
當?shù)卿汼SH服務器時,如果出現(xiàn)“Host key verification failed.”之類的錯誤信息時,該怎么進行處理?
答:顯而易見,這個問題屬于證書不匹配,可以通過直接刪掉“/ssh/known_hosts”文件來快速解決。
請問SSH連接和VPN連接有什么共同點和不同點?
答:它們的共同點就是都是加密的、可靠的技術,都能跨平臺建立連接。不同點是:VPN連接更接近底層,有專用連接屬性;SSH連接類似加密代理服務器,具有普通連接屬性。
有什么快捷辦法查看Ubuntu系統(tǒng)是否安裝了SSH軟件包?
答:只要在“/etc/ssh”下查看“sshd_config”文件是否存在,如果不存在此路徑或者沒有該文件,那么就說明Ubuntu系統(tǒng)目前還沒有安裝SSH軟件包。這時候,可以執(zhí)行“sudo apt-get install ssh”命令進行SSH軟件包的安裝操作。
在Linux系統(tǒng)主機上安裝openssh程序包,該怎么操作呢?
答:不妨通過“apt-get install openssh-client”命令,安裝openssh的客戶端程序,使用“apt-get install openssh-server”命令,安裝openssh的服務端程序。安裝好程序后,可以使用“ps-e|grep ssh”命令,查看SSH服務是否已經(jīng)啟動運行。
當用戶使用SSH協(xié)議連接從本機系統(tǒng)登錄進入遠程服務器時,用戶有時想切換到本地主機做一些操作,之后再重新回到遠程服務器。此時,用戶是否需要中斷SSH協(xié)議連接?
答:不需要!只要在遠程服務器系統(tǒng)中輸入“~
當在多個窗口中打開到相同遠程服務器的SSH連接時,有沒有辦法不要每次都輸入登錄賬號和密碼?
答:有辦法!只要配置好SSH的連接共享選項即可,具體操作為:首先在本地計算機系統(tǒng)中打開用戶的SSH配置文件,一般該配置文件位于“~/.ssh/config”,之后手工添加如下2行代碼內(nèi)容:
現(xiàn)在嘗試切換本地主機與遠程服務器的SSH連接,并重新創(chuàng)建一條新連接,之后打開一個新窗口,再創(chuàng)建一條連接,用戶將會看到,第二條連接幾乎是在轉(zhuǎn)眼間就創(chuàng)建好了。很顯然,這種配置操作有利于提升操作效率。
請問怎樣減少每次與遠程服務器的SSH連接等待時間?
答:用戶可以嘗試在自己的SSH配置文件中,添加“GSSAPIAuthentication no”這條命令代碼。
請問怎樣在Quidway系列交換機中開啟SSH服務?
答:只要在交換機后臺系統(tǒng)依次執(zhí)行如下命令:
完成上述配置操作后,Stelnet客戶端用戶就能以“rtytur”賬號、“659873”密碼,以SSH連接方式遠程登錄到Quidway系列交換機后臺系統(tǒng)了。
請問SSH協(xié)議在數(shù)據(jù)傳輸過程中,是否一直采用加密方式傳輸嗎?
答:不是!在連接協(xié)商階段,數(shù)據(jù)報文是采用的明文方式傳輸?shù)摹?/p>
能否簡單介紹一下SSH協(xié)議連接的建立過程?
答:首先客戶端程序向服務端程序發(fā)起SSH協(xié)議連接請求;其次服務端向客戶端發(fā)起版本協(xié)商;第三服務端發(fā)送公鑰、隨機數(shù)等信息;第四客戶端返回確認信息,同時附帶用公鑰加密過的一個隨機數(shù),用于雙方計算Session Key;第五進行反復認證階段,直到認證成功或者認證次數(shù)達到上限,服務端切換SSH連接為止;第六客戶端將要執(zhí)行的命令加密后傳給服務端,服務端接收到報文,解密后執(zhí)行該命令,同時將執(zhí)行的結(jié)果加密發(fā)還給客戶端,客戶端顯示接收結(jié)果。