通常在大型网络中,计算机需要在经过身份验证的代理后面运行 - 与外界的任何连接都需要用户名/密码,这通常是用户用来登录电子邮件,工作站等的密码.
这意味着必须把在网络的密码apt.conf
文件,以及典型的http_proxy, ftp_proxy
和https_proxy
在定义的环境变量~/.profile
我意识到apt.conf
你可以设置chmod 600
(默认情况下它不是Ubuntu/Debian!)但是在我们的系统上有人需要root priveleges.
我也意识到从技术上来说无法从具有root访问权限的人那里获取密码,但是我想知道是否有办法模糊密码以防止意外发现.Windows以管理员身份运行,但以某种方式存储网络密码(可能存储在以某种方式遮盖的注册表深处),因此在典型使用中,您不会在纯文本中偶然发现它
我从前几天开始只问,在比较各系统的配置文件时,我完全不小心以这种方式发现了别人的密码.
@monjardin - 公共密钥认证不是这个网络的替代品我害怕.此外,我怀疑大多数命令行工具都支持它.
@Neall - 我不介意其他用户具有Web访问权限,他们可以使用我的凭据访问Web,我只是不希望它们以纯文本形式出现在我的密码中.
使用以下方法,您永远不必以纯文本格式保存代理密码.只要您需要http/https/ftp访问权限,您就必须以交互方式输入密码:
使用openssl将纯文本代理密码加密到文件中,例如使用AES256加密:
openssl enc -aes-256-cbc -in pw.txt -out pw.bin
使用(不同的)密码来保护编码文件
删除纯文本pw.txt
在例如〜/ .alias中创建一个别名来设置你的http_proxy/https_proxy/ftp_proxy环境变量(为$ USER/proxy/$ PORT设置合适的值)
别名myproxy ='PW =`openssl aes-256-cbc -d -in pw.bin`; PROXY = "HTTP:// $ USER:$ @ PW代理:$ PORT"; export http_proxy = $ PROXY; export https_proxy = $ PROXY; export ftp_proxy = $ PROXY'
你应该将这个文件发送到普通的shell环境中(在某些系统上这是自动完成的)
输入'myproxy'并输入用于加密文件的openssl密码
完成.
注意:在shell会话期间,密码在用户环境中可用(并且可读).如果要在使用后从环境中清除它,可以使用另一个别名:
别名clearproxy ='export http_proxy =; export https_proxy =; export ftp_proxy ='
我做了一个修改后的解决方案:
编辑/etc/bash.bashrc
并添加以下行:
alias myproxy='read -p "Username: " USER;read -s -p "Password: " PW PROXY="$USER:$PW@proxy.com:80"; export http_proxy=http://$PROXY;export Proxy=$http_proxy;export https_proxy=https://$PROXY;export ftp_proxy=ftp://$PROXY'
从下一次登录输入myproxy
并输入您的用户名/密码组合!现在与sudo -E
-E,--preserve-env向安全策略指示用户希望保留其现有环境变量。
例如 sudo -E apt-get update
备注:代理设置仅在Shell会话期间有效