• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      SSH命令行幫你實(shí)現(xiàn)6種“貼心”的安全應(yīng)用

      2018-09-10 10:44:58戎力
      計算機(jī)與網(wǎng)絡(luò) 2018年5期
      關(guān)鍵詞:配置文件私鑰密鑰

      戎力

      安全Shell是一種用于安全連接的網(wǎng)絡(luò)協(xié)議。它被大量地運(yùn)用在針對各種服務(wù)器的連接、修改、上傳和最后退出的環(huán)節(jié)中。這些操作有時候可以通過工具來實(shí)現(xiàn),有時甚至可以直接使用終端。在這里,您將了解到在標(biāo)準(zhǔn)的SSH之外使用終端的一些技巧。

      在深入討論SSH技術(shù)之前,我們假設(shè)您對SSH密鑰的安全性和使用已經(jīng)具有了一定的基本知識。在這篇文章中,我們將使用用戶來指代SSH的用戶,用yourserver.tld指代域名或IP地址,所以您需要自行替換成正確的用戶名和主機(jī)名信息。

      為了修改SSH服務(wù)器端的配置,您需要直接以root身份登錄,或者通過sudo進(jìn)行一般用戶權(quán)限的提升。而為了使得在/etc/ssh/sshd_config中的更改能在系統(tǒng)范圍內(nèi)生效,您需要重新加載SSH服務(wù)。

      根據(jù)您所使用的操作系統(tǒng)不同,具體操作上也會有所差異。例如在基于Debian的系統(tǒng)上,您需要以root身份或是做sudo提權(quán)后,在終端里輸入service ssh reload。每次當(dāng)您更改了服務(wù)器端的SSH配置之后,就需要重新加載(或重新啟動)其對應(yīng)的服務(wù)。

      配置順序

      和其他Linux系統(tǒng)工具一樣,配置選項(xiàng)生效的順序如下:

      ·在終端/應(yīng)用程序中直接給出命令行的選項(xiàng)。

      ·用戶的配置文件(~/.ssh/config)。

      ·客戶端的系統(tǒng)范圍配置文件(/etc/ssh/ssh_config)。

      這就意味著:任何通過命令行所輸入的SSH參數(shù)都比那些在配置文件中的選項(xiàng)有著優(yōu)先的執(zhí)行級別。因此對于單次性的操作而言,最好方式是直接使用命令輸入;而對于您要經(jīng)常連接的特定主機(jī),或是要用到不同用戶名的情況,最好還是保存在配置文件中。SSH守護(hù)程序本身用到的,系統(tǒng)范圍的配置文件被存放在etc/ssh/sshd_config處。

      主機(jī)匹配

      您可以在各種SSH配置文件中使用通配符,也就是說您可以把一個指令集應(yīng)用到大范圍的主機(jī)上,然后對每個主機(jī)再使用一些特定的指令,例如:

      在~/.ssh/config中,

      ·Host myhost-*

      ·Port 1234

      ·Host myhost-one

      ·Hostname myhost-one.yourserver.tld

      ·User admin

      ·Host myhost-two

      ·Hostname myhost-two.yourserver.tld

      ·User anotheradmin

      在上面的例子中,兩臺服務(wù)器使用相同端口號1234,不同的用戶名建立不同的連接。有了這些基礎(chǔ)知識,我們就可以開始用SSH來實(shí)現(xiàn)以下6種應(yīng)用了。

      1. SFTP

      “想訪問存儲在服務(wù)器上的文件,但無需安裝任何額外的軟件?!?/p>

      大多數(shù)FTP應(yīng)用程序(例如FileZilla)都可以使用SFTP(SSH的文件傳輸協(xié)議),它是將文件傳輸?shù)侥腤eb主機(jī)的首選方式。在其GUI上,您可以填寫地址、端口、用于SSH連接的用戶名以及要傳輸?shù)奈募MǔG闆r下,您需要進(jìn)入應(yīng)用程序的設(shè)置界面,禁用固定的密碼,而改用您的SSH私鑰來建立連接。

      在終端上,您可以通過輸入sftp,來調(diào)出交互式控制臺。請記住,由于其SFTP只提供有限的命令選項(xiàng),如:創(chuàng)建目錄、瀏覽訪問的目錄和下載/上傳文件,因此您無法在控制臺內(nèi)使用到SSH的其他所有命令。您可以通過鏈接:https://itservices.usc. edu/sftp/cline/來了解更多的SFTP命令行操作。

      2. KeepAlive

      “我的防火墻老是關(guān)閉我的連接?!?/p>

      有時候,您的防火墻可能會中斷掉一些正常的連接。下面就有三個指令能夠防止SSH連接被過早地掐斷。

      TCP KeepAlive可以在SSH的客戶端和守護(hù)進(jìn)程的配置文件中使用。它決定了是否需要發(fā)送保持連接的TCP消息。TCP KeepAlive的默認(rèn)值為yes。它會發(fā)出TCP消息,提醒防火墻注意到連接的繼續(xù),而不要掐斷它。當(dāng)然有些用戶在不需要的時候可以將TCP KeepAlive設(shè)置為no。

      ServerAliveInterval驗(yàn)證其連接是否存活。在客戶端配置中,您可以指定客戶端在發(fā)送數(shù)據(jù)包給服務(wù)器之前所需等待的秒數(shù)。如果將該值設(shè)置為0,即禁用此選項(xiàng),則會在一段空閑的時間之后斷開SSH會話。而指令ServerAliveCountMax指定了從發(fā)送數(shù)據(jù)包,到該連接由于沒有來自服務(wù)器的響應(yīng)而被取消的反復(fù)嘗試次數(shù)(一般為整數(shù))。

      ClientAliveInterval是在SSH守護(hù)進(jìn)程的服務(wù)配置文件/etc/ssh/sshd_config中所使用的指令。它指定了服務(wù)器在發(fā)送數(shù)據(jù)包給客戶端之前所需等待的秒數(shù)。您可以將該值設(shè)置為0,即禁用該選項(xiàng)。而指令ClientAliveCountMax指定了從發(fā)送數(shù)據(jù)包,到該連接由于沒有來自客戶端的響應(yīng)而被取消的反復(fù)嘗試次數(shù)(一般為整數(shù))。

      所有主機(jī)都使用相同的客戶端SSH配置文件,來設(shè)置keep alive的參數(shù):

      在~/.ssh/config中

      ·Host *

      ·ServerAliveInterval 30

      ·ServerAliveCountMax 10

      這樣的配置意味著客戶在發(fā)送一個空包之前要等待30s,并且要嘗試多達(dá)10次,以確認(rèn)在服務(wù)器無響應(yīng)的情況下中斷連接。

      3. SSH代理

      “我覺得每次輸入密碼短語很繁瑣,也許我應(yīng)該生成一些密鑰而非密碼短語?!?/p>

      一種常見且有效的安全做法是加密您的SSH私鑰,并用密碼短語來進(jìn)行解密。這種方法的缺點(diǎn)是:您每次都必須繁瑣地重新輸入密碼以初始化SSH連接,而這本質(zhì)上就是反復(fù)輸入密碼的過程。

      為了解決這個問題,可以使用ssh-agent。它是一種能在會話期間將私鑰保持在內(nèi)存之中的工具。當(dāng)代理啟動后,所有需要SSH連接的窗口和應(yīng)用程序都將通過該代理來獲得您的私鑰,因此只需要在會話開始的時候一次性輸入密碼短語便可。

      在大多數(shù)Linux操作系統(tǒng)上,SSH代理是默認(rèn)運(yùn)行的,因此不需要額外進(jìn)行安裝。如果您想檢查ssh代理是否正在運(yùn)行,您可以在終端里輸入:

      .ps x | grep ssh-agent

      如果還沒有運(yùn)行的話,您可以這樣啟動它:

      .eval $(ssh-agent)

      一旦它運(yùn)行起來,您就可以羅列出ssh代理當(dāng)前可用的所有密鑰:

      .ssh-add L

      如果要用的密鑰丟失,您可以通過ssh-add / path/to/your/ssh/privatekey來添加它。當(dāng)您想連接一臺主機(jī),卻碰到Too many authentication failures for user的錯誤時,這就意味著SSH代理正在試圖檢查所有可用的密鑰。因此最好的方法是在您的配置文件中定義一個IdentityFile / path/to/your/ssh/privatekey/forthishost。如果您要確保只能使用由IdentityFile所定義的連接,則可以在配置中使用指令I(lǐng)dentitiesOnly yes,它會告訴SSH只使用由終端或配置文件所提供的密鑰。請看如下的例子:

      在~/.ssh/config中,

      ·Host yourserver

      ·HostName yourserver.tld

      ·IdentityFile~/.ssh/yourprivatekeyname

      ·IdentitiesOnly yes

      ·User user

      如果我就只想在最開始的時候輸入一次密碼短語,之后就算我從一臺主機(jī)連接到另一臺主機(jī)的時候,也不要提示我再次輸入,這時候可以使用“代理轉(zhuǎn)發(fā)”。

      為了能夠在互連的主機(jī)之間共用相同的信任憑證,代理也是可以被轉(zhuǎn)發(fā)的。雖然這樣的轉(zhuǎn)發(fā)非常方便,但是請記?。捍韮H能將您的私鑰保存在內(nèi)存之中。一旦某個惡意程序攻破了聯(lián)網(wǎng)的一臺主機(jī),就能使用您的密鑰在其他主機(jī)上執(zhí)行各種命令??梢?,代理轉(zhuǎn)發(fā)是一種不安全的方法,只能在您所連接的信任主機(jī)上被使用。

      為了用到代理轉(zhuǎn)發(fā),您需要在客戶端的ssh_config上設(shè)置ForwardAgent yes,并在任何需要用到轉(zhuǎn)發(fā)代理的服務(wù)器上的/etc/ssh/sshd_config里設(shè)置AllowAgentForwarding yes。

      4.通過本地端口轉(zhuǎn)發(fā)的隧道

      “我想要做的事情,本地電腦不允許,但我知道哪里會有一臺電腦是允許的?!?/p>

      隧道是SSH的一種最常見的高級使用案例。它在SSH連接內(nèi)通過加密應(yīng)用的流量,從而實(shí)現(xiàn)安全保護(hù)。這對于傳統(tǒng)軟件或其他安全性欠佳的應(yīng)用和系統(tǒng)來說是非常有用的,它為軟件設(shè)置了一個不能也無法改變的安全包裝,以抵御不安全網(wǎng)絡(luò)環(huán)境。

      (1)服務(wù)器端

      服務(wù)器端可以修改文件/etc/ssh/sshd_config中的配置。由于以#開頭的行是被注釋掉的,因此如果您想使用該選項(xiàng)的話,只要復(fù)制出另外一行進(jìn)行修改或者直接取消掉注釋便可。對于端口轉(zhuǎn)發(fā)式的隧道,為了使其工作,您需要開啟TCP的轉(zhuǎn)發(fā)。

      在/etc/ssh/sshd_config中,

      ·AllowTcpForwarding yes。

      如果您修改了服務(wù)器的配置文件,請記得重新加載SSH服務(wù)。至于如何重載或重新啟動您的服務(wù)端的服務(wù),則取決于操作系統(tǒng)的類型。在大多數(shù)情況下,應(yīng)該是如下命令:

      ·service ssh reload

      (2)客戶端

      在客戶端有好幾種方法來使用SSH隧道。大多數(shù)情況下,可以這樣來實(shí)現(xiàn)SSH隧道:

      如果您想對一個僅供另一臺機(jī)器訪問的數(shù)據(jù)庫來執(zhí)行查詢操作,那么就需要用隧道來連接那臺機(jī)器。下面的例子展示了如何運(yùn)用yourserver.tld來隧道連接到一臺PostgreSQL數(shù)據(jù)庫服務(wù)器,并且在那里使用基于終端的psql frontend。

      ①ssh-L5000:psql.server.ip:5432 user@yourserver.tld

      ②psql-p 5000-h 127.0.0.1-U postgres

      一些網(wǎng)站被您的網(wǎng)絡(luò)所封鎖,所以要用隧道來進(jìn)入一臺允許各種連接和能夠?yàn)g覽這些網(wǎng)站的主機(jī)。下面的命令能夠使用本機(jī)以隧道的方式進(jìn)入另一臺不受限制的主機(jī)。在本地計算機(jī)上,您可以在瀏覽器中輸入并打開http://localhost: 1337,它將用默認(rèn)的HTTP 80端口打開yourwebsite.com。

      ssh -L 1337:yourwebsite.com:80

      5. X11轉(zhuǎn)發(fā)

      “我并沒有一些昂貴軟件的許可證,我只能在連上服務(wù)器后,顯示在我家里的屏幕上。”

      您可以通過SSH來初始化X11轉(zhuǎn)發(fā),這就意味著您可以顯示遠(yuǎn)程的計算機(jī)桌面環(huán)境,并將各種X11包轉(zhuǎn)發(fā)到您所使用的計算機(jī)上。X11轉(zhuǎn)發(fā)有著廣泛的適用性,特別是在您必須使用某個特定軟件的GUI時。在下面的例子中,我們將測試用X11來轉(zhuǎn)發(fā)xclock。

      (1)先決條件

      為了能將X11包轉(zhuǎn)發(fā)給客戶端,xauth包必須被預(yù)先安裝在服務(wù)器上。所以如果你想測試xclock的話,就必須提前安裝好它。

      (2)服務(wù)器

      在服務(wù)器上,需要在/etc/ssh/sshd_config里啟用X11Forwarding。具體操作是:定位到具有X11Forwarding的一行,將其設(shè)置為yes,也就是說:如果該行已經(jīng)存在,并被注釋掉了的話,您直接刪除前面的#便可。

      在/etc/ssh/sshd_config中,

      ·X11Forwarding yes

      在修改了配置文件之后,請不要忘記重新加載SSH服務(wù)。

      (3)客戶端

      ·ssh-X

      現(xiàn)在,您可以使用X11來將服務(wù)器轉(zhuǎn)發(fā)到客戶端的計算機(jī)上了。通過輸入xclock,一個時鐘窗口會在您的桌面電腦上彈出,如截圖所示。

      X11轉(zhuǎn)發(fā)的偉大之處在于:當(dāng)你想使用一個由于授權(quán)方面的原因而只能安裝在一臺服務(wù)器上的軟件,或是與您的普通電腦有著不同的性能需求時,都可以用到X11轉(zhuǎn)發(fā)。

      6.代理跳轉(zhuǎn)(ProxyJump)

      “我想訪問與外界相隔離的專用網(wǎng)絡(luò),我會搭建一臺能夠連接的服務(wù)器,然后跳轉(zhuǎn)到要去的那些機(jī)器上?!?/p>

      SSH的一種常見訪問策略是連接到一臺堡壘主機(jī)上,然后從那里跳轉(zhuǎn)到?jīng)]有公共路由的設(shè)備上。該堡壘主機(jī)被稱為代理鏈上的第一跳主機(jī)。ProxyJump是OpenSSH的一個新功能,它簡化了所用到的跳躍主機(jī)。在您不希望被公開暴露時,它為主機(jī)添加了一層額外的安全。

      這方面的一個案例是:用一臺小機(jī)器作為路由器后面的堡壘實(shí)體機(jī),在上面運(yùn)行sshd,并從那里跳轉(zhuǎn)到其他主機(jī)上??梢?,這對于家庭網(wǎng)絡(luò)是很實(shí)用的。這與從端口轉(zhuǎn)發(fā)和從一臺主機(jī)隧道到下一臺上并沒什么不同,只是現(xiàn)在這種情況下,用關(guān)鍵字ProxyJump描述的是在指定的多臺主機(jī)間跳躍,參照的是含有逗號分隔的列表。在終端上,請使用參數(shù)-J,如下所示:

      ·ssh-J proxy.server.tld:22 yourserver.tld

      對于更為復(fù)雜的、需要使用不同的用戶名來實(shí)現(xiàn)的若干臺主機(jī)間的跳轉(zhuǎn),可以使用:

      ·ssh-J [email protected]:port1,[email protected]:port2

      由于可能會經(jīng)常使用到主機(jī)間的跳轉(zhuǎn),因此最好把它們包含在用戶或系統(tǒng)常規(guī)SSH配置之中。如下的配置文件就適用于上述的用例:

      在~/.ssh/config中,

      ·Host yourserver.tld

      ·HostName yourserver.tld

      ·ProxyJumpuser1@proxy.server1.tld:port1,user2@proxy. server2.tld:port2

      ·User user

      你也可以為每一個主機(jī)的跳轉(zhuǎn)指定SSH配置,并使用ProxyJump字段來指定它們的別稱。

      在~/.ssh/config中,

      ·Host firstproxy

      ·HostName proxy.server1.tld

      ·Port 1234

      ·User user1

      ·Host secondproxy

      ·HostName proxy.server2.tld

      ·Port 5678

      ·User user2

      ·Host yourserver.tld

      ·HostName yourserver.tld

      ·ProxyJump firstproxy,secondproxy

      ·User user

      注意,新添加的ProxyJump和那些舊的ProxyCommand指令都完全遵守“先到先得”的原則,這就意味著先設(shè)定的會被先執(zhí)行、以此類推下去。如果您的SSH客戶端并不支持ProxyJump的話,您可以改用ProxyJump的指令:

      ProxyCommand ssh firstproxy -W %h:%p。

      猜你喜歡
      配置文件私鑰密鑰
      探索企業(yè)創(chuàng)新密鑰
      提示用戶配置文件錯誤 這樣解決
      比特幣的安全性到底有多高
      基于改進(jìn)ECC 算法的網(wǎng)絡(luò)信息私鑰變換優(yōu)化方法
      密碼系統(tǒng)中密鑰的狀態(tài)與保護(hù)*
      搭建簡單的Kubernetes集群
      互不干涉混用Chromium Edge
      忘記ESXi主機(jī)root密碼怎么辦
      一種基于虛擬私鑰的OpenSSL與CSP交互方案
      一種對稱密鑰的密鑰管理方法及系統(tǒng)
      安平县| 马边| 卓资县| 邮箱| 临清市| 寻乌县| 岑溪市| 高碑店市| 阳城县| 洞口县| 保靖县| 宝兴县| 兴宁市| 固始县| 隆化县| 东乌珠穆沁旗| 沙湾县| 新干县| 吐鲁番市| 花莲市| 萨嘎县| 临夏市| 文安县| 克拉玛依市| 浪卡子县| 许昌市| 巴青县| 衡山县| 八宿县| 万宁市| 潼关县| 木里| 建平县| 中阳县| 象山县| 滦南县| 保靖县| 喜德县| 巴彦淖尔市| 平陆县| 清苑县|