我位于代理服务器后面,需要指定身份验证参数才能访问互联网。为此,我已将用户名、密码、主机和端口号导出到我的/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
才会接受它,最多可以强制它们从不同的文件中读取。我要利用这一点。我将把代理凭据保存到除 root/sudoer 用户之外的任何人都无法访问的文件中。但每次使用之前都必须向和/或公开代理设置。/etc/apt/apt.conf
apt-get
software-center
为 shell 环境提供代理的安全方法
切所有内容将其放入您的文件中~/.bashrc
,以便在 shell 环境中提供代理设置,然后粘贴到文件中~/.mybashproxy
。将~/.mybashproxy
所有权更改为 root,并剥夺组和其他人的读写权限,以便只有 sudoers 可以访问它们。
sudo chown root:root ~/.mybashproxy
sudo chmod go-rw ~/.mybashproxy
~/.bashrc
在或 在 中创建以下别名~/.bash_aliases
,我倾向于使用后者。
alias begin_proxy='sudo cat .mybashproxy > .tmp; source .tmp; rm .tmp'
用法
您必须通过begin_proxy
终端命令提供sudo
密码来在 shell 环境中启用代理。这样,没有人会知道您的代理凭据。但是使用后,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
,请使用命令。在此过程中,除非您忘记使用,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
希望这会有所帮助。