自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

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

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

【51CTO.com快譯】安全Shell是一種用于安全連接的網(wǎng)絡(luò)協(xié)議。它被大量地運(yùn)用在針對各種服務(wù)器的連接、修改、上傳和最后退出的環(huán)節(jié)中。這些操作有時候可以通過工具來實現(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)工具一樣,配置選項生效的順序如下:

  1. 在終端/應(yīng)用程序中直接給出命令行的選項。
  2. 用戶的配置文件(~/.ssh/config)。
  3. 客戶端的系統(tǒng)范圍配置文件(/etc/ssh/ssh_config)。

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

主機(jī)匹配

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

在~/.ssh/config中,

  1. Host myhost-* 
  2.   Port 1234 
  3. Host myhost-one 
  4.   Hostname myhost-one.yourserver.tld 
  5.   User admin 
  6. Host myhost-two 
  7.   Hostname myhost-two.yourserver.tld 
  8.   User anotheradmin 

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

1. SFTP

我想訪問存儲在服務(wù)器上的文件,但無需安裝任何額外的軟件。

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

SFTP

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

2. KeepAlive

我的防火墻老是關(guān)閉我的連接!

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

  • TCPKeepAlive可以在SSH的客戶端和守護(hù)進(jìn)程的配置文件中使用。它決定了是否需要發(fā)送保持連接的TCP消息。TCPKeepAlive的默認(rèn)值為yes。它會發(fā)出TCP消息,提醒防火墻注意到連接的繼續(xù),而不要掐斷它。當(dāng)然有些用戶在不需要的時候可以將TCPKeepAlive設(shè)置為no。
  • ServerAliveInterval驗證其連接是否存活。在客戶端配置中,您可以指定客戶端在發(fā)送數(shù)據(jù)包給服務(wù)器之前所需等待的秒數(shù)。如果將該值設(shè)置為0,即禁用此選項,則會在一段空閑的時間之后斷開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,即禁用該選項。而指令ClientAliveCountMax指定了從發(fā)送數(shù)據(jù)包,到該連接由于沒有來自客戶端的響應(yīng)而被取消的反復(fù)嘗試次數(shù)(一般為整數(shù))。

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

在~/.ssh/config中

  1. Host * 
  2. ServerAliveInterval 30 
  3. ServerAliveCountMax 10 

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

3. SSH代理

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

一種常見且有效的安全做法是加密您的SSH私鑰,并用密碼短語來進(jì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)行,您可以在終端里輸入:

  1. ps x | grep ssh-agent 

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

  1. eval $(ssh-agent) 

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

  1. 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中,

  1. Host yourserver 
  2. HostName yourserver.tld 
  3. IdentityFile ~/.ssh/yourprivatekeyname 
  4. IdentitiesOnly yes 
  5. User user 

(1) 代理轉(zhuǎn)發(fā)

我就只想在最開始的時候輸入一次密碼短語,之后就算我從一臺主機(jī)連接到另一臺主機(jī)的時候,也不要提示我再次輸入。

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

我想要做的事情,本地電腦不允許,但我知道哪里會有一臺電腦是允許的。

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

(1) 服務(wù)器端

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

在/etc/ssh/sshd_config中,

  1. AllowTcpForwarding yes 

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

  1. service ssh reload 

(2) 客戶端

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

  • 如果您想對一個僅供另一臺機(jī)器訪問的數(shù)據(jù)庫來執(zhí)行查詢操作,那么就需要用隧道來連接那臺機(jī)器。下面的例子展示了如何運(yùn)用yourserver.tld來隧道連接到一臺PostgreSQL數(shù)據(jù)庫服務(wù)器,并且在那里使用基于終端的psql frontend。
    1. ssh -L 5000:psql.server.ip:5432 user@yourserver.tld 
    2. psql -p 5000 -h 127.0.0.1 -U postgres 
  • 一些網(wǎng)站被您的網(wǎng)絡(luò)所封鎖,所以要用隧道來進(jìn)入一臺允許各種連接和能夠瀏覽這些網(wǎng)站的主機(jī)。下面的命令使您能夠使用本機(jī)以隧道的方式進(jìn)入另一臺不受限制的主機(jī)。在本地計算機(jī)上,您可以在瀏覽器中輸入并打開http://localhost:1337,它將用默認(rèn)的HTTP 80端口打開yourwebsite.com。
    1. 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中,

  1. X11Forwarding yes 

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

(3) 客戶端

  1. ssh -X 

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

通過輸入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ī)器上。

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

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

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

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

  1. ssh -J [email protected]:port1,[email protected]:port2 

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

在~/.ssh/config中,

  1. Host yourserver.tld 
  2.   HostName yourserver.tld 
  3.   ProxyJump user1@proxy.server1.tld:port1,user2@proxy.server2.tld:port2 
  4.   User user 

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

在~/.ssh/config中,

  1. Host firstproxy 
  2.   HostName proxy.server1.tld 
  3.   Port 1234 
  4.   User user1 
  5. Host secondproxy 
  6.   HostName proxy.server2.tld 
  7.   Port 5678 
  8.   User user2 
  9. Host yourserver.tld 
  10.   HostName yourserver.tld 
  11.   ProxyJump firstproxy,secondproxy 
  12.   User user 

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

原文標(biāo)題:Advanced Secure Shell: 6 Things You Can Do With SSH,作者: Sanja Bonic

【51CTO譯稿,合作站點轉(zhuǎn)載請注明原文譯者和出處為51CTO.com】

責(zé)任編輯:趙寧寧 來源: 51CTO.com
相關(guān)推薦

2017-12-06 13:55:09

網(wǎng)絡(luò)安全防火墻動態(tài)安全

2022-12-12 09:12:30

2024-11-20 15:24:49

2009-10-29 16:52:23

2020-07-31 11:12:39

安全威脅網(wǎng)絡(luò)攻擊網(wǎng)絡(luò)安全

2010-11-24 15:41:56

MySQL命令行

2023-08-29 13:53:00

前端攔截HashMap

2024-01-22 08:53:00

策略任務(wù)RocketMQ

2022-05-24 10:43:02

延時消息分布式MQ

2020-12-10 16:16:08

工具代碼開發(fā)

2020-12-11 06:44:16

命令行工具開發(fā)

2024-02-26 11:12:33

定時任務(wù)線程

2010-07-15 09:37:47

Perl命令行

2010-07-20 14:18:22

Perl命令行

2011-08-15 13:06:36

2010-11-16 11:50:21

oracle命令行登錄

2009-04-11 01:34:35

2017-08-30 19:11:38

Linux命令行tab

2021-07-28 13:23:32

CICD管道安全漏洞

2024-03-05 13:14:35

安全管理CISO
點贊
收藏

51CTO技術(shù)棧公眾號