gpg是一種非常通用的加密工具,可讓您加密文件,加密電子郵件並驗證簽名文件的完整性。
創建壓縮文檔
在討論創建加密的歸檔文件之前,讓我們首先回顧如何創建壓縮的tar歸檔文件。假設您有一個folder要歸檔的目錄,請輸入以下命令
$ tar -cvzf folder.tar.gz folder
-c標識用於創建文檔,-v用於詳細輸出,以便我們獲得視覺反饋,該反饋使我們知道情況正在發生,-z並用於壓縮穩定,從而使生命周期更短。
為了稍后解壓縮並解壓縮此歸檔文件,您將輸入以下命令。
$ tar -xvzf folder.tar.gz
該-x標志用於提取存檔,-v用於詳細提取,並-z解壓縮存檔。
創建一個加密的文檔
現在,我們已經回顧了使用創建歸檔文件的方法tar,讓我們看一下如何通過添加gpg混合來創建加密歸檔文件。您可以選擇使用基於密鑰的加密,基於密碼的加密或兩者結合使用。在“ 如何使用GPG加密和解密單個文件”一文中,我們已經介紹了使用基於密鑰的加密,因此在這里我們將介紹基於密碼的加密。要創建名為folder的目錄的加密壓縮存檔,請輸入以下命令。
$ tar -cvzf - folder | gpg -c > folder.tar.gz.gpg
所有tar標志都與前面的示例相同。唯一的區別是,我們沒有在tar命令中為存檔指定文件名,而是指定了文件名,-以便可以將tar命令的輸出傳遞到gpg。然后,我們繼續執行該操作,並且gpg的-c標志指示我們要使用對稱密碼(如上所述)使用對稱密碼對文件進行加密。最后,我們將輸出重定向到一個指定的文件folder.tar.gz.gpg用>。輸入此命令后,系統將提示您輸入要用於加密數據的密碼。如果您不喜歡這種行為,而是希望在命令中指定密碼,則可以在--passphrase后面添加標志-c,如下所示。
警告
使用--passphrase在命令行上指定密碼短語的安全性較差,原因有很多。它將密碼保存在您的bash歷史記錄(或任何其他shell歷史記錄文件)中。另外,如果您使用的是多用戶系統,則其他用戶可能會看到您的密碼正在檢查正在運行的進程。即使您是系統的單一用戶,任何能夠檢查當前正在運行的進程的軟件都可能會記錄您的密碼短語。
$ tar -cvzf - folder | gpg -c --passphrase yourpassword > folder.tar.gz.gpg
為了稍后解密,解壓縮和解壓縮此歸檔文件,您將輸入以下命令。
$ gpg -d folder.tar.gz.gpg | tar -xvzf -
該-d標志gpg表明我們要解密folder.tar.gz.gpg文件的內容。然后,我們將其通過管道傳遞到tar命令。該-x標志用於提取從gpg 傳遞過來的穩定,-v用於冗長的提取,-z用於解壓縮該穩定,並-f -指定要傳遞的是未歸檔的文件。
創建多個單獨的目錄加密穩定
以上示例假定我們要基於單個目錄創建一個加密的存檔。如果我們有一個包含多個子目錄的目錄,但是我們想為每個目錄創建一個單獨的加密歸檔,該怎么辦?我們可以使用bash for loop來幫助我們實現目標。只需cd進入包含您要為其創建單個歸檔文件的子目錄的目錄,然后輸入以下命令。
$ for i in * ; do tar -cvzf - "$i" | gpg -c --passphrase yourpassword > "$i".tar.gpg; done
加密網絡上的netcat存檔傳輸。
在“使用Netcat的技巧和竅門”命令文章中,我們向您展示了如何使用netcat通過網絡將目錄從一台計算機傳輸到另一台計算機。在那篇文章中,我們注意到這種傳輸數據的方法並不安全,因為它缺乏加密。Gpg可用於為過程添加加密層。假設要從中復制存檔host1的計算機具有主機名,要將數據復制到的計算機具有主機名host2,並且要傳輸的目錄名為folder。
在以下輸入 host1
$ tar -cvzf - folder | gpg -c | nc -l 6666
輸入此命令后,系統將提示您輸入要用於加密數據的密碼。
現在,在host2輸入以下命令
$ nc host1 6666 | gpg -d | tar -xvzf -
輸入此命令后,系統將提示您輸入在上一步中選擇的密碼。現在,您應該將folder目錄完整包含在當前的工作目錄中host2。
如果您需要通過網絡復制加密的數據,則上面的示例將完成工作,但是如果將OpenSSH套件安裝在系統上或您具有安裝它的必要特權,則使用OpenSSH套件中的scp是更好的選擇。如果情況並非如此,請隨時將這個技巧放在后腰。
在本文中,我們討論了如何制作壓縮的tar歸檔文件,如何對其進行加密,如何創建目錄的多個單獨的加密歸檔文件,並且還學習了一種通過在管道中添加netcat來通過網絡復制加密歸檔文件的快捷方法。如果沒有其他說明,很明顯,通過將這些GNU / Linux工具組合在一起,我們獲得的結果要大於它們的總和。
