java 建立ssh隧道_SSH基础
SSH
基本概念
SSH 為 Secure Shell 的縮寫,由 IETF 的網(wǎng)絡(luò)小組(Network Working Group)所制定;SSH 為建立在應(yīng)用層基礎(chǔ)上的安全協(xié)議。SSH 是較可靠,專為遠(yuǎn)程登錄會(huì)話和其他網(wǎng)絡(luò)服務(wù)提供安全性的協(xié)議。利用 SSH 協(xié)議可以有效防止遠(yuǎn)程管理過程中的信息泄露問題。SSH最初是UNIX系統(tǒng)上的一個(gè)程序,后來又迅速擴(kuò)展到其他操作平臺(tái)。SSH在正確使用時(shí)可彌補(bǔ)網(wǎng)絡(luò)中的漏洞。SSH客戶端適用于多種平臺(tái)。幾乎所有UNIX平臺(tái)—包括HP-UX、Linux、AIX、Solaris、Digital UNIX、Irix,以及其他平臺(tái),都可運(yùn)行SSH。
功能
安全驗(yàn)證方法
協(xié)議
- 傳輸層協(xié)議 [SSH-TRANS] 提供了服務(wù)器認(rèn)證,保密性及完整性。此外它有時(shí)還提供壓縮功能。 SSH-TRANS 通常運(yùn)行在TCP/IP連接上,也可能用于其它可靠數(shù)據(jù)流上。 SSH-TRANS 提供了強(qiáng)力的加密技術(shù)、密碼主機(jī)認(rèn)證及完整性保護(hù)。該協(xié)議中的認(rèn)證基于主機(jī),并且該協(xié)議不執(zhí)行用戶認(rèn)證。更高層的用戶認(rèn)證協(xié)議可以設(shè)計(jì)為在此協(xié)議之上。
- 用戶認(rèn)證協(xié)議 [SSH-USERAUTH] 用于向服務(wù)器提供客戶端用戶鑒別功能。它運(yùn)行在傳輸層協(xié)議 SSH-TRANS 上面。當(dāng)SSH-USERAUTH 開始后,它從低層協(xié)議那里接收會(huì)話標(biāo)識(shí)符(從第一次密鑰交換中的交換哈希H )。會(huì)話標(biāo)識(shí)符唯一標(biāo)識(shí)此會(huì)話并且適用于標(biāo)記以證明私鑰的所有權(quán)。 SSH-USERAUTH 也需要知道低層協(xié)議是否提供保密性保護(hù)。
- 連接協(xié)議 [SSH-CONNECT] 將多個(gè)加密隧道分成邏輯通道。它運(yùn)行在用戶認(rèn)證協(xié)議上。它提供了交互式登錄話路、遠(yuǎn)程命令執(zhí)行、轉(zhuǎn)發(fā) TCP/IP 連接和轉(zhuǎn)發(fā) X11 連接。
傳輸方法
SSH是由客戶端和服務(wù)端的軟件組成的,有兩個(gè)不兼容的版本分別是:1.x和2.x。 用SSH 2.x的客戶程序是不能連接到SSH 1.x的服務(wù)程序上去的。OpenSSH 2.x同時(shí)支持SSH 1.x和2.x。 服務(wù)端是一個(gè)守護(hù)進(jìn)程(daemon),他在后臺(tái)運(yùn)行并響應(yīng)來自客戶端的連接請(qǐng)求。服務(wù)端一般是sshd進(jìn)程,提供了對(duì)遠(yuǎn)程連接的處理,一般包括公共密鑰認(rèn)證、密鑰交換、對(duì)稱密鑰加密和非安全連接。 客戶端包含ssh程序以及像scp(遠(yuǎn)程拷貝)、slogin(遠(yuǎn)程登陸)、sftp(安全文件傳輸)等其他的應(yīng)用程序。 他們的工作機(jī)制大致是本地的客戶端發(fā)送一個(gè)連接請(qǐng)求到遠(yuǎn)程的服務(wù)端,服務(wù)端檢查申請(qǐng)的包和IP地址再發(fā)送密鑰給SSH的客戶端,本地再將密鑰發(fā)回給服務(wù)端,自此連接建立。SSH 1.x和SSH 2.x在連接協(xié)議上有一些差異。 一旦建立一個(gè)安全傳輸層連接,客戶機(jī)就發(fā)送一個(gè)服務(wù)請(qǐng)求。當(dāng)用戶認(rèn)證完成之后,會(huì)發(fā)送第二個(gè)服務(wù)請(qǐng)求。這樣就允許新定義的協(xié)議可以與上述協(xié)議共存。連接協(xié)議提供了用途廣泛的各種通道,有標(biāo)準(zhǔn)的方法用于建立安全交互式會(huì)話外殼和轉(zhuǎn)發(fā)(“隧道技術(shù)”)專有 TCP/IP 端口和 X11 連接。
傳輸過程
遠(yuǎn)程主機(jī)收到用戶的登錄請(qǐng)求,把自己的公鑰發(fā)給用戶-->用戶使用這個(gè)公鑰,將登錄密碼加密后,發(fā)送回來-->遠(yuǎn)程主機(jī)用自己的私鑰,解密登錄密碼,如果密碼正確,就同意用戶登錄。
參考:百度百科
使用方法
ssh遠(yuǎn)程登錄
# 遠(yuǎn)程登錄 默認(rèn)端口22 ssh username@ip_host# 遠(yuǎn)程登錄 指定端口 ssh -p 端口 username@ip_hostssh登出
logoutssh遠(yuǎn)程上傳文件
ssh
scp
# 上傳文件 scp 本地端文件path username@ip_host:服務(wù)器端文件路徑# 上傳文件夾 scp -r 本地端文件夾path username@ip_host:服務(wù)器端文件文件夾ssh遠(yuǎn)程下載文件
ssh
scp
# 拉取文件 scp username@ip_host:服務(wù)器端文件路徑 本地端文件path# 拉取文件夾 scp username@ip_host:服務(wù)器端文件夾路徑 本地端文件夾path使用ssh在遠(yuǎn)程后臺(tái)不中斷地跑程序
nohup python test.py擴(kuò)展
解包:tar xvf FileName.tar.xz 打包:tar cvf FileName.tar DirName若你對(duì)人工智能(CV/NLP)、C++/python編程、互聯(lián)網(wǎng)就業(yè)及發(fā)展有興趣,歡迎點(diǎn)贊關(guān)注和收藏。謝謝鼓勵(lì)!!!
Anxjing.AI:SSH實(shí)現(xiàn)原理?zhuanlan.zhihu.com總結(jié)
以上是生活随笔為你收集整理的java 建立ssh隧道_SSH基础的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 10款好用的程序员软件推荐
- 下一篇: MySQL配置文件详解