我需要使用当前登录的用户凭据导出 RHEL 7 上的代理。
我可以通过手动添加来实现这一点.bashrc 或 .bash_profile。:
export http_proxy=http://username:[email protected]:6080
export https_proxy=http://username:[email protected]:6080
上面的方法效果很好。但我不想要这种方法,因为我们对用户名和密码进行硬编码,而且它不安全。
是否可以利用现有的/etc/影子文件作为导出代理的密码?
答案1
您可以将类似以下内容作为脚本放置在 /etc/profile.d/ 目录中:
#!/bin/bash
if [ $SHLVL = 1 ]; then
echo -n "Enter proxy password:"
read -sr mypass
export http_proxy="http://$USER:[email protected]:6080"
export https_proxy=$http_proxy
echo
fi
if [ $SHLVL = 1 ]
将阻止脚本在生成子 shell 时运行,例如启动脚本进行日志记录时。
read -s
将防止在输入密码时回显输入。
$USER
是一个环境变量,即当前用户名。
最后一个echo
只是打印一个换行符以获得下一行的下一个提示。
答案2
真正的问题是连接到代理时需要用户名/密码身份验证。无论如何,您在连接到代理时需要在某处设置用户名和密码。
这是有原因的代理 PAC 配置文件格式不包括密码验证。
在应用程序内设置密码
您需要在每个应用程序的基础上定义代理 URL,而不是在 bash 环境中设置代理 URL。例如,为了安装 Redhat 软件包,您可以在/etc/yum.conf
或任何/etc/yum.repos.d/*.repo
文件中定义代理。
同样,对于 Web 浏览器,请在浏览器设置中设置代理 URL。
代理链
运行不接受密码的本地代理,但当它连接到实际的上游代理时,您可以定义用户名和密码。
使用诸如代理登录自动化器