我正在运行 Linux Mint 11 (Katya) 和 GNOME 2,并使用公司代理。我进入了“网络代理偏好设置”并输入了我的自动配置 URL,这似乎适用于 Pidgin 和 Chrome(但不是 Thunderbird...),但它不会影响我从终端运行的程序,例如 ssh、telnet、git 等。我点击了“网络代理偏好设置”中的“应用全系统...”按钮,它提示我输入密码两次,但这似乎没有帮助。
有什么想法吗?
答案1
/etc/profile
只需使用 ie、nano编辑您的文件即可:
sudo nano /etc/profile
并在文件末尾添加
http_proxy="http://user:password@foo_server:port"
https_proxy="http://user:password@foo_server:port"
ftp_proxy="http://user:password@foo_server:port"
export http_proxy ftp_proxy https_proxy
在哪里foo_服务器是你的代理服务器,并且港口是您连接到代理服务器所需的端口。
要检查新设置是否正在使用,只需使用类型即可source /etc/profile
,然后您可以检查服务器是否正在使用(如果尚未安装 curl,请安装)
curl icanhazip.com
它应该返回你的代理服务器的地址。
git、ssh、telnet 等软件往往会忽略这些设置并使用自己的设置,我知道there are several utilities
允许ssh
你这样做。不会有唯一的,适用于所有人做事的方式。
也许针对您想要使用的每项服务提出单独的问题比要求一种使其运作的全局方法更好,这里的简短回答是:没有全球性的方法。
答案2
关于控制台环境
像其他答案所建议的那样,设置各种环境变量是可行的方法。我还会定义所有变量的大写对应项,因为某些应用程序只识别其中一个。此外,我会为您不想代理的主机定义 NO_PROXY,例如:
导出no_proxy =“localhost,127.0.0.1,localaddress,.corporate.com”
代理 SSH
这需要更多调整。有一个名为“connect”的第三方工具可用这里. 其主页是这里。它将允许您通过 HTTPS 和 SOCKS 代理代理 SSH 连接。但是,它仅支持基本身份验证方法。
为了实现这一点,您必须修改 ~/.ssh/config 文件以使用“connect”命令作为代理命令。假设您的公司 SOCKS 服务器在 socks.corporate.com 的 1080 端口上运行,您可以在 ~/.ssh/config 中添加 ProxyCommand 选项,如下所示:
主机 remote.outside.net ProxyCommand 连接-S socks.corporate.com %h %p
在调用代理命令时,变量 %h 和 %p 将被替换为 SSH 命令指定的目标主机名和端口。
如果您不想为每个目标主机添加单独的 HOST 条目,您也可以使用通配符:
## 在防火墙外,使用带有 SOCKS 连接的连接命令。 主持人 * ProxyCommand 连接-S socks.corporate.com %h %p ## 在防火墙内部,使用 connect 命令直接连接。 主机 *.socks.coporate.com ProxyCommand 连接 %h %p
类似地,如果您想使用 https 代理,请使用 -H 选项代替上面示例中的 -S 选项,如下所示:
## 防火墙外,使用 HTTP 代理 主持人 * ProxyCommand 连接-H proxy.corporate.com:8080 %h %p ## 防火墙内部,直接 主机 *.corporate.com ProxyCommand 连接 %h %p
由于您身处公司网络,因此最好确保您的 IT 部门同意您代理 SSH。也许他们甚至有比我的更好的解决方案。否则,您可能会被列入黑名单,并且完全无法连接 :)
答案3
从控制台提示中可以很容易地使用 http_proxy 环境变量,它允许我们以文本模式从会话/应用程序连接到互联网。
根据您的设置编写以下命令来配置代理服务器:
$ export http_proxy=http://servidor-ip:port/
$ export http_proxy=http://127.0.0.1:3128/
$ export http_proxy=http://proxy.myempresa.com:3128/