我位於代理伺服器後面,需要指定身份驗證參數才能存取網際網路。為此,我已將我的使用者名稱、密碼、主機和 port_no 匯出到我的/home/$USER/.bashrc
文件和/etc/apt/apt.conf
文件中,這些都是人類可讀的。
例如
Acquire::http::proxy "http://<username>:<password>@172.16.0.2:8080";
Acquire::ftp::proxy "ftp://<username>:<password>@172.16.0.2:8080/";
Acquire::https::proxy "https://<username>:<password>@172.16.0.2:8080/";
這使得我的密碼對任何對這些文件具有讀取權限的人公開可見。
是否有一種安全的方法將這些參數傳遞給需要代理身份驗證參數的應用程序,而不必以這種人類可讀的形式編寫?
筆記:最好了解永久性方法。我知道我可以透過每次開啟新會話時匯出來臨時執行此操作。但每次打開新會話時我都必須這樣做,我想避免這種情況。
答案1
很抱歉寫了很長的答案,但apt.conf
係統問題非常敏感。所以有必要把各方面都搞清楚。
據我所知,只有以人類可讀的形式給出的代理設定才接受,最多您可以強制它們從不同的文件中讀取~/.bashrc
。/etc/apt/apt.conf
我將利用這一點。我會將代理憑證保留到 root/sudoer 使用者以外的任何人都無法存取的檔案中。但每次使用代理設定之前apt-get
和/或使用它們之前都必須公開它們。software-center
向 shell 環境提供代理的安全方法
切所有內容您將其放入~/.bashrc
shell 環境中,以便在 shell 環境中提供代理設定並貼上到文件中,例如~/.mybashproxy
.將所有權更改~/.mybashproxy
為 root 並剝奪群組和其他群組的讀寫權限,以便只有 sudoers 可以存取它們。
sudo chown root:root ~/.mybashproxy
sudo chmod go-rw ~/.mybashproxy
~/.bashrc
在或 in中建立以下別名~/.bash_aliases
,我更喜歡使用後者。
alias begin_proxy='sudo cat .mybashproxy > .tmp; source .tmp; rm .tmp'
用法
您必須透過begin_proxy
提供密碼的終端命令在 shell 環境中啟用代理sudo
。這樣,沒有人會知道您的代理憑證。但是使用後,begin_proxy
如果您允許某人存取相同終端,他可能能夠使用env | grep proxy
終端機中的命令查看您的憑證。為了安全起見,請勿允許任何人使用您所使用的相同終端begin_proxy
。
為 apt-get 提供代理的安全方式
apt-get
並software-center
使用該檔案/etc/apt.conf
來保留代理設定。建立一個文件/etc/apt/myproxy.txt
並放置內容您可以/etc/apt/apt.conf
從終端打開它,
sudo gedit /etc/apt/myproxy.txt
接下來複製所需的內容並儲存文件。使用刪除群組和其他群組的讀寫權限/etc/apt/myproxy.txt
,如上所示chmod
。
tmproxy.txt
建立一個名為 say at 的臨時文件/etc/apt/
,並授予其所有讀寫權限,如下所示:
sudo touch /etc/apt/tmproxy.txt
sudo chmod go+rw /etc/apt/tmproxy.txt
必要時我將向其提供代理apt-get
設定software-center
。新增以下行/etc/apt/apt.conf
以從中讀取代理設定/etc/apt/tmproxy.txt
。
#inclued /etc/apt/tmproxy.txt;
除了上面的行/etc/apt/apt.conf
不應該包含任何內容。現在在中建立以下別名~/.bash_aliases
alias able_apt='sudo cat /etc/apt/myproxy.txt > /etc/apt/tmproxy.txt'
alias disable_apt='echo "0;" > /etc/apt/tmproxy.txt'
用法
在使用之前apt-get
和/或software-center
您必須使用able_apt
提供sudo
密碼的命令。然後您的所有代理憑證將儲存在/etc/apt/tmproxy.txt
和apt-get
/或software-center
將能夠使用它。關閉後software-center
或使用apt-get
清除代理憑證後/etc/apt/tmproxy.txt
,使用 command disable_apt
。在此過程中,也沒有人可以看到您的代理憑證,除非您/etc/apt/tmproxy.txt
忘記使用它們disable_apt
註釋和總結
- 在別名中,零後面的
disable_apt
分號 (;
) 很重要,否則您將得到錯誤“文件末尾有多餘的垃圾”右上方面板上也會出現紅色錯誤圖示。 - 如果沒有
~/.bash_aliases
,請建立一個。確保source ~/.bashrc
包含~/.bashrc
以下行後,
if [ -f ~/.bash_aliases ]; then
. ~/.bash_aliases
fi
- 完成上述設定以啟用別名後,您必須登出並登入一次,或者可以
source ~/.bash_aliases
在終端機中使用。 在故事的結尾,您可以使用三個別名:
begin_proxy
- 在 shell 環境中啟動代理程式。持續到終端開啟為止。able_apt
- 啟用apt-get
和/或softwere-center
儲存代理憑證/etc/apt/tmproxy.txt
disable_apt
- 停用apt-get
和/或softwere-center
清除代理憑證/etc/apt/tmproxy.txt
希望這會有所幫助。