導航:首頁 > 操作系統 > ssh隧道Linux

ssh隧道Linux

發布時間:2023-02-14 11:42:09

⑴ SSH是什麼

您好

什麼是SSH?
傳統的網路服務程序,如:ftp、pop和telnet在本質上都是不安全的,因為它們在網路上用明文傳送口令和數據,別有用心的人非常容易就可以截獲這些口令和數據。而且,這些服務程序的安全驗證方式也是有其弱點的,就是很容易受到「中間人」(man-in-the-middle)這種方式的攻擊。所謂「中間人」的攻擊方式,就是「中間人」冒充真正的伺服器接收你的傳給伺服器的數據,然後再冒充你把數據傳給真正的伺服器。伺服器和你之間的數據傳送被「中間人」一轉手做了手腳之後,就會出現很嚴重的問題。

SSH的英文全稱是Secure SHell。通過使用SSH,你可以把所有傳輸的數據進行加密,這樣「中間人」這種攻擊方式就不可能實現了,而且也能夠防止DNS和IP欺騙。還有一個額外的好處就是傳輸的數據是經過壓縮的,所以可以加快傳輸的速度。SSH有很多功能,它既可以代替telnet,又可以為ftp、pop、甚至ppp提供一個安全的「通道」。

最初SSH是由芬蘭的一家公司開發的。但是因為受版權和加密演算法的限制,現在很多人都轉而使用OpenSSH。OpenSSH是SSH的替代軟體,而且是免費的,可以預計將來會有越來越多的人使用它而不是SSH。

SSH是由客戶端和服務端的軟體組成的,有兩個不兼容的版本分別是:1.x和2.x。用SSH 2.x的客戶程序是不能連接到SSH 1.x的服務程序上去的。OpenSSH 2.x同時支持SSH 1.x和2.x。

SSH的安全驗證是如何工作的
從客戶端來看,SSH提供兩種級別的安全驗證。

第一種級別(基於口令的安全驗證)只要你知道自己帳號和口令,就可以登錄到遠程主機。所有傳輸的數據都會被加密,但是不能保證你正在連接的伺服器就是你想連接的伺服器。可能會有別的伺服器在冒充真正的伺服器,也就是受到「中間人」這種方式的攻擊。

第二種級別(基於密匙的安全驗證)需要依靠密匙,也就是你必須為自己創建一對密匙,並把公用密匙放在需要訪問的伺服器上。如果你要連接到SSH伺服器上,客戶端軟體就會向伺服器發出請求,請求用你的密匙進行安全驗證。伺服器收到請求之後,先在你在該伺服器的家目錄下尋找你的公用密匙,然後把它和你發送過來的公用密匙進行比較。如果兩個密匙一致,伺服器就用公用密匙加密「質詢」(challenge)並把它發送給客戶端軟體。客戶端軟體收到「質詢」之後就可以用你的私人密匙解密再把它發送給伺服器。

用這種方式,你必須知道自己密匙的口令。但是,與第一種級別相比,第二種級別不需要在網路上傳送口令。

第二種級別不僅加密所有傳送的數據,而且「中間人」這種攻擊方式也是不可能的(因為他沒有你的私人密匙)。但是整個登錄的過程可能需要10秒。

安裝並測試OpenSSH
因為受到美國法律的限制,在很多linux的發行版中都沒有包括OpenSSH。但是,可以從網路上下載並安裝OpenSSH(有關OpenSSH的安裝和配置請參考:http://www.linuxaid.com.cn/engineer/brimmer/html/OpenSSH.htm)。

安裝完OpenSSH之後,用下面命令測試一下:

ssh -l [your accountname on the remote host] [address of the remote host]

如果OpenSSH工作正常,你會看到下面的提示信息:

The authenticity of host [hostname] can't be established.
Key fingerprint is 1024 5f:a0:0b:65:d3:82:df:ab:44:62:6d:98:9c:fe:e9:52.
Are you sure you want to continue connecting (yes/no)?

OpenSSH告訴你它不知道這台主機,但是你不用擔心這個問題,因為你是第一次登錄這台主機。鍵入「yes」。這將把這台主機的「識別標記」加到「~/.ssh/know_hosts」文件中。第二次訪問這台主機的時候就不會再顯示這條提示信息了。

然後,SSH提示你輸入遠程主機上你的帳號的口令。輸入完口令之後,就建立了SSH連接,這之後就可以象使用telnet那樣使用SSH了。

⑵ 如何通過反向 SSH 隧道訪問 NAT 後面的 Linux 伺服器

一般有兩種方法: 1、利用linux伺服器防火牆(操作系統自帶的iptables即可),僅允許指定IP訪問sshd埠 2、利用linux伺服器配置文件: /etc/hosts.allow ,加入行:(假定你的ip是210.13.218.11) sshd:210.13.218.11:allow

⑶ Windows下連接Linux的ssh工具有哪些

四款常見的Linux SSH工具:

1、putty

putty是最有名的SSH和telnet客戶端,由Simon Tatham為Windows平台開發。putty是一款開源軟體,提供可用的源代碼並有一批志願者進行開發和支持。

2、secureCRT

secureCRT支持SSH,同時支持Telnet和rlogin協議。secureCRT是一款用於連接運行包括Windows、Unix和VMS的理想工具。通過使用內含的VCP命令行程序可以進行加密文件的傳輸。有流行CRTTelnet客戶機的所有特點,包括:自動注冊、對不同主機保持不同的特性、列印功能、顏色設置、可變屏幕尺寸、用戶定義的鍵點陣圖和優良的VT100、VT102、VT220和ANSI競爭,能從命令行中運行或從瀏覽器中運行。其它特點包括文本手稿、易於使用的工具條、用戶的鍵點陣圖編輯器、可定製的ANSI顏色等。secureCRT的SSH協議支持DES、3DES和RC4密碼和密碼與RSA鑒別。

3、EasySSH

EasySSH是一款便捷的GUI SSH客戶端,提供了一種連接遠程Linux伺服器的快捷工具。

盡管EasySSH沒有提供Putty中提供的大量配置選項,但是它非常易於使用。EasySSH的最佳功能之一是提供標簽式界面,因此你可以打開多個SSH連接並在它們之間快速切換。

EasySSH的功能包括:分組、保存用戶名密碼、外觀選項、支持本地和遠程隧道。

4、Xshell

Xshell是一個強大的安全終端模擬軟體,它支持SSH1、SSH2以及Microsoft Windows平台的TELNET協議。xshell通過互聯網到遠程主機的安全連接以及它創新性的設計和特色幫助用戶在復雜的網路環境中享受他們的工作。

⑷ linux遠程連接ssh工具有哪些

推薦這四款:

1、putty

putty是最有名的SSH和telnet客戶端,由Simon
Tatham為Windows平台開發。putty是一款開源軟體,提供可用的源代碼並有一批志願者進行開發和支持。

2、secureCRT

secureCRT支持SSH,同時支持Telnet和rlogin協議。secureCRT是一款用於連接運行包括Windows、Unix和VMS的理想工具。通過使用內含的VCP命令行程序可以進行加密文件的傳輸。有流行CRTTelnet客戶機的所有特點,包括:自動注冊、對不同主機保持不同的特性、列印功能、顏色設置、可變屏幕尺寸、用戶定義的鍵點陣圖和優良的VT100、VT102、VT220和ANSI競爭,能從命令行中運行或從瀏覽器中運行。其它特點包括文本手稿、易於使用的工具條、用戶的鍵點陣圖編輯器、可定製的ANSI顏色等。secureCRT的SSH協議支持DES、3DES和RC4密碼和密碼與RSA鑒別。

3、EasySSH

EasySSH是一款便捷的GUI SSH客戶端,提供了一種連接遠程Linux伺服器的快捷工具。

盡管EasySSH沒有提供Putty中提供的大量配置選項,但是它非常易於使用。EasySSH的最佳功能之一是提供標簽式界面,因此你可以打開多個SSH連接並在它們之間快速切換。EasySSH的功能包括:分組、保存用戶名密碼、外觀選項、支持本地和遠程隧道。

4、Xshell

Xshell是一個強大的安全終端模擬軟體,它支持SSH1、SSH2以及Microsoft Windows平台的TELNET協議。xshell通過互聯網到遠程主機的安全連接以及它創新性的設計和特色幫助用戶在復雜的網路環境中享受他們的工作。

⑸ Linux-SSL和SSH和OpenSSH,OpenSSL有什麼區別

ssl是通訊鏈路的附加層。可以包含很多協議。https, ftps, .....
ssh只是加密的shell,最初是用來替代telnet的。通過port forward,也可以讓其他協議通過ssh的隧道而起到加密的效果。
SSL是一種國際標準的加密及身份認證通信協議,您用的瀏覽器就支持此協議。SSL(Secure Sockets Layer)最初是由美國Netscape公司研究出來的,後來成為了Internet網上安全通訊與交易的標准。SSL協議使用通訊雙方的客戶證書以及CA根證書,允許客戶/伺服器應用以一種不能被偷聽的方式通訊,在通訊雙方間建立起了一條安全的、可信任的通訊通道。它具備以下基本特徵:信息保密性、信息完整性、相互鑒定。 主要用於提高應用程序之間數據的安全系數。SSL協議的整個概念可以被總結為:一個保證任何安裝了安全套接字的客戶和伺服器間事務安全的協議,它涉及所有TC/IP應用程序。

SSH的英文全稱是Secure SHell。通過使用SSH,你可以把所有傳輸的數據進行加密,這樣「中間人」這種攻擊方式就不可能實現了,而且也能夠防止DNS和IP欺騙。還有一個額外的好處就是傳輸的數據是經過壓縮的,所以可以加快傳輸的速度。SSH有很多功能,它既可以代替telnet,又可以為ftp、pop、甚至ppp提供一個安全的「通道」。SSH是由客戶端和服務端的軟體組成的,有兩個不兼容的版本分別是:1.x和2.x。用SSH 2.x的客戶程序是不能連接到SSH 1.x的服務程序上去的。OpenSSH 2.x同時支持SSH 1.x和2.x。SSH的安全驗證是如何工作的從客戶端來看,SSH提供兩種級別的安全驗證。第一種級別(基於口令的安全驗證)只要你知道自己帳號和口令,就可以登錄到遠程主機。所有傳輸的數據都會被加密,但是不能保證你正在連接的伺服器就是你想連接的伺服器。可能會有別的伺服器在冒充真正的伺服器,也就是受到「中間人」這種方式的攻擊。第二種級別(基於密匙的安全驗證)需要依靠密匙,也就是你必須為自己創建一對密匙,並把公用密匙放在需要訪問的伺服器上。如果你要連接到SSH伺服器上,客戶端軟體就會向伺服器發出請求,請求用你的密匙進行安全驗證。伺服器收到請求之後,先在你在該伺服器的家目錄下尋找你的公用密匙,然後把它和你發送過來的公用密匙進行比較。如果兩個密匙一致,伺服器就用公用密匙加密「質詢」(challenge)並把它發送給客戶端軟體。客戶端軟體收到「質詢」之後就可以用你的私人密匙解密再把它發送給伺服器。用這種方式,你必須知道自己密匙的口令。但是,與第一種級別相比,第二種級別不需要在網路上傳送口令。第二種級別不僅加密所有傳送的數據,而且「中間人」這種攻擊方式也是不可能的(因為他沒有你的私人密匙)。但是整個登錄的過程可能需要10秒。
OpenSSL------一個C語言函數庫,是對SSL協議的實現。
OpenSSH-----是對SSH協議的實現。
ssh 利用 openssl 提供的庫。openssl 中也有個叫做 openssl 的工具,是 openssl 中的庫的命令行介面。
編譯依賴上看:
openssh依賴於openssl,沒有openssl的話openssh就編譯不過去,也運行不了。
HTTPS可以使用TLS或者SSL協議,而openssl是TLS、SSL協議的開源實現,提供開發庫和命令行程序。openssl很優秀,所以很多涉及到數據加密、傳輸加密的地方都會使用openssl的庫來做。
可以理解成所有的HTTPS都使用了openssl。以root身份執行命令:grep -l 'libssl.*deleted' /proc/*/maps | tr -cd 0-9\\n | xargs -r ps u,可以看到哪些進程載入了老版本的openssl庫。

⑹ 如何通過反向 SSH 隧道訪問 NAT 後面的 Linux 伺服器

除了SSH埠轉發外,另一個辦法就是SSH反向隧道。SSH反向隧道這個概念其實很簡單。為此,你需要在限制性家用網路外面有另一個主機,即所謂的「中繼主機」(relay host),你可以從所在地方通過SSH連接到該主機。你可以使用帶公共IP地址的虛擬專用伺服器(VPS)實例來建立中繼主機。然後要做的就是建立一條持久性SSH隧道,從你家用網路的伺服器通向公共中繼主機。有了這條隧道,你就可以從中繼主機「連回」到家用伺服器(這就是為什麼它叫「反向」隧道)。無論你人在什麼地方,或者你家用網路中的NAT或防火牆限制多嚴格,只要你可以連接到中繼主機,就可以連接到家用伺服器。x0dx0a在Linux上建立SSH反向隧道x0dx0a不妨看看我們如何可以建立並使用一條SSH反向隧道。我們假設下列設置。我們將建立一條從家用伺服器(homeserver)到中繼伺服器(relayserver)的SSH反向隧道,那樣我們就可以從另一台名為clientcomputer的計算機,通過中繼伺服器以SSH的方式連接到家用伺服器。中繼伺服器的公共IP地址是1.1.1.1。x0dx0a在家用伺服器上,打開通向中繼伺服器的SSH連接,如下所示。x0dx0ahomeserver~$ ssh -fN -R 10022:localhost:22 [email protected]這里的埠10022是你可以選擇的任何隨意的埠號。只要確保該埠沒有被中繼伺服器上的其他程序所使用就行。x0dx0a「-R 10022:localhost:22」選項定義了反向隧道。它通過中繼伺服器的埠1022,將流量轉發到家用伺服器的埠22。x0dx0a若使用「-fN」選項,一旦你成功驗證了身份、登錄到SSH伺服器,SSH就會徑直進入後台。如果你不想在遠程SSH伺服器上執行任何命令,只想轉發埠,就像在本文的示例中,這個選項很有用。x0dx0a運行上述命令後,你將直接回到家用伺服器的命令提示符。x0dx0a登錄進入到中繼伺服器,核實127.0.0.1:10022綁定到sshd。如果是這樣,那意味著反向隧道已正確建立起來。x0dx0arelayserver~$ sudo netstat -nap | grep 10022x0dx0atcp 0 0 127.0.0.1:10022 0.0.0.0:* LISTEN 8493/sshdx0dx0a現在可以從其他任何計算機(比如clientcomputer),登錄進入到中繼伺服器。然後訪問家用伺服器,如下所示。x0dx0arelayserver~$ ssh -p 10022 homeserver_user@localhostx0dx0a需要注意的一個地方就是,你為localhost輸入的SSH登錄信息/密碼應該適用於家用伺服器,而不是適用於中繼伺服器,因為你是通過隧道的本地端點登錄進入到家用伺服器。所以別為中繼伺服器輸入登錄信息/密碼。成功登錄後,你就接入到了家用伺服器。x0dx0a通過SSH反向隧道,直接連接到NAT後面的伺服器x0dx0a雖然上述方法讓你可以連接到NAT後面的家用伺服器,但是你需要登錄兩次,先登錄到中繼伺服器,然後登錄到家用伺服器。這是由於中繼伺服器上SSH隧道的端點綁定到回送地址(127.0.0.1)。x0dx0a但實際上,只要單次登錄到中繼伺服器,就可以直接連接到NAT後面的家用伺服器。為此,你需要讓中繼伺服器上的sshd不僅可以從回送地址轉發埠,還可以從外部主機轉發埠。這可以通過在中繼伺服器上運行的sshd裡面指定GatewayPorts選項來實現。x0dx0a打開中繼伺服器的/etc/ssh/sshd_conf,添加下面這一行。x0dx0arelayserver~$ vi /etc/ssh/sshd_confx0dx0aGatewayPorts clientspecifiedx0dx0a重啟sshd。x0dx0a基於Debian的系統:x0dx0arelayserver~$ sudo /etc/init.d/ssh restartx0dx0a基於紅帽的系統:x0dx0arelayserver~$ sudo systemctl restart sshdx0dx0a現在不妨從家用伺服器開始建立SSH反向隧道,如下所示。x0dx0ahomeserver~$ ssh -fN -R 1.1.1.1:10022:localhost:22 [email protected]登錄進入到中繼伺服器,用netstat命令核實SSH反向隧道已成功建立起來。x0dx0arelayserver~$ sudo netstat -nap | grep 10022x0dx0atcp 0 0 1.1.1.1:10022 0.0.0.0:* LISTEN 1538/sshd: devx0dx0a不像之前的情況,隧道的端點現在是1.1.1.1:10022(中繼伺服器的公共IP地址),而不是127.0.0.1:10022。這意味著,可以從外部主機連接到隧道端點。x0dx0a現在可以從其他任何計算機(比如clientcomputer),輸入下列命令,訪問NAT後面的家用伺服器。x0dx0aclientcomputer~$ ssh -p 10022 [email protected]在上述命令中,雖然1.1.1.1是中繼伺服器的公共IP地址,但homeserver_user必須是與家用伺服器關聯的用戶帳戶。這是由於,你實際登錄進入的主機是家用伺服器,而不是中繼伺服器。後者只是將你的SSH流量中繼轉發到家用伺服器而已。x0dx0a在Linux上建立持久性SSH反向隧道x0dx0a想必你已明白了如何建立一條SSH反向隧道,現在不妨讓隧道具有「持久性」,那樣隧道隨時建立並運行起來(無論面對什麼樣的情況:暫時網路擁塞、SSH超時還是中繼主機重啟等)。畢竟,要是隧道沒有始終建立起來,你也就無法可靠地連接到家用伺服器。x0dx0a為了建立持久性隧道,我要使用一款名為autossh的工具。顧名思義,萬一SSH會話由於任何原因而斷開,這個程序讓你可以自動重啟SSH會話。所以,讓SSH反向隧道保持持久連接很有用。x0dx0a第一步,不妨建立無需密碼的SSH登錄機制,從家用伺服器登錄到中繼伺服器。那樣一來,autossh就能重啟斷開的SSH反向隧道,不需要用戶干預。x0dx0a下一步,將autossh安裝到發起隧道的家用伺服器上。x0dx0a從家用伺服器運行帶下列變數的autossh,從而建立一條通向中繼伺服器的持久性SSH隧道。x0dx0ahomeserver~$ autossh -M 10900 -fN -o "PubkeyAuthentication=yes" -o "StrictHostKeyChecking=false" -o "PasswordAuthentication=no" -o "ServerAliveInterval 60" -o "ServerAliveCountMax 3" -R 1.1.1.1:10022:localhost:22 [email protected]「-M 10900」選項指定了中繼伺服器上的一個監控埠,將用來交換測試數據,以監控SSH會話。該埠不應該被中繼伺服器上的任何程序所使用。x0dx0a「-fN」選項傳遞給ssh命令,讓SSH隧道可以在後台運行。x0dx0a「-o XXXX」選項指令ssh執行下列操作:x0dx0a•使用密鑰驗證,而不是密碼驗證。x0dx0a•自動接受(未知的)SSH主機密鑰。x0dx0a•每60秒就交換持久連接(keep-alive)消息。x0dx0a•最多發送3個持久連接消息,而不接受任何響應。x0dx0a與SSH反向隧道有關的其餘選項仍與之前一樣。x0dx0a如果你希望SSH隧道一啟動就自動建立起來,可以在/etc/rc.local中添加上述的autossh命令。

閱讀全文

與ssh隧道Linux相關的資料

熱點內容
程序員簡歷中項目經歷怎麼寫 瀏覽:685
沒有網怎麼編譯vue 瀏覽:69
怎麼將軟體源碼壓縮到伺服器上 瀏覽:593
雲伺服器學生代金券什麼時候有 瀏覽:873
命令親親圖片 瀏覽:568
數據結構學好還可以當程序員嗎 瀏覽:648
你的app被鎖了怎麼辦 瀏覽:932
程序員不會跳槽怎麼辦 瀏覽:461
伺服器發郵件要啟動什麼服務 瀏覽:107
怎樣折疊解壓球 瀏覽:112
因腰突而改行的程序員 瀏覽:900
單房收益演算法 瀏覽:612
程序員的優點和缺點 瀏覽:383
普林斯頓數學指南中文版pdf 瀏覽:61
轉業命令落款時間 瀏覽:234
android簡訊app 瀏覽:204
vivo手機怎麼傳app到oppo 瀏覽:534
歸並是什麼演算法策略 瀏覽:291
怎樣在電腦中製作截圖文件夾 瀏覽:492
程序員包裝半年經驗 瀏覽:57