Pet*_*mit 11 ssh http tunnel ubuntu
我在一所大学担任研究助理。我经常想通过 http 或 ssh 从家里连接到大学资源,但它们被阻止从外部访问。因此,他们有一个前端 ssh 服务器,我们可以在那里通过 ssh 进入和从那里连接到其他主机。对于 http 访问,他们建议像这样设置 ssh 隧道
ssh -L 1234:proxyserver.university.fi:8080 publicsshserver.university.fi
Run Code Online (Sandbox Code Playgroud)
并将浏览器的代理设置指向端口 1234
一切都很好,工作正常,但我不想让我所有的其他互联网流量通过这个代理服务器,每次我想连接到大学时,我都必须再次执行这些步骤。
我想要什么:
这可能吗?对于 http 部分,我想我可能应该设置自己的本地透明代理以轻松完成此操作。ssh部分怎么样?
为此,我使用了代理自动配置 (PAC) 文件。我会把我的贴在这里,但维基百科有一个很好的示例文件.
在您的浏览器中,将“使用代理自动配置来自”指向所述文件(可能托管在共享 Web 服务器上)。几乎适用于所有还不错的浏览器。
请注意,您仍然需要设置 SSH 隧道。(或者ssh -D
仅对某些主机使用SOCKS 代理,在您的 PAC 中定义——但 SOCKS 在 Opera 中不起作用。)
编辑:是的,因为你这边似乎没有太多兴趣,我会稍微扩展一下我的答案。:-)
要自动设置您的 SSH 隧道,sudo apt-get install autossh
并将其放入您的 crontab:
@reboot autossh -L 1234:proxyserver.university.fi:8080 publicsshserver.university.fi
或者,您可以将 ssh 命令放在您的~/.bash_profile
或 ~/.bashrc 中。
现在,至于确定要代理哪些域以及要直接连接到哪些域,请像这样创建一个 PAC:
function FindProxyForURL(url, host)
{
var httpProxy = 'PROXY 127.0.0.1:1234';
var noProxy = 'DIRECT';
var default_ = noProxy;
// Host matches that use the HTTP proxy.
var httpProxyMatches = [
'intranet.university.fi',
'webmail.university.fi',
'*yourwildcard*'
];
// Check all host patterns and network masks.
for (var i = 0; i < httpProxyMatches.length; i++) {
if (shExpMatch(host, httpProxyMatches[i])) {
alert('HTTP ' + httpProxy + ' match for host: ' + host + '; url: ' + url);
return httpProxy;
}
alert('DEFAULT ' + default_ + ' for host: ' + host + '; url: ' + url);
return default_;
}
alert('PAC loaded at ' + new Date() + '.');
Run Code Online (Sandbox Code Playgroud)
然后,转到 Firefox 的高级网络设置并将其指向该文件。如果成功,您将在 JavaScript 控制台 (Ctrl+Shift+J) 中看到“PAC 已加载”消息。如果您不使用 Firefox,请删除“警报”行。
这是一个非常基本的 PAC,但它应该可以帮助您。我的还查看 IP 网络掩码以确定内部/外部服务等。
让我们知道你相处得如何。
这真的很容易做到。我一直使用它来访问我们生产网络服务器背后的数据库。
1)第一部分是我刚才问的一个问题。
你可以在你的 ~/.bashrc 中给它起别名。
添加该行
Run Code Online (Sandbox Code Playgroud)alias university_ssh="ssh -L 1234:proxyserver.university.fi:8080 publicsshserver.university.fi"
并使用 source ~/.bashrc 重新加载 bashrc 文件
现在您只需输入 university_ssh即可通过 ssh 连接到您的数据库服务器。
2)接下来,您需要编辑您的 /etc/hosts 文件以添加 university.loc(.loc 是一个假 TLD)并将其指向 localhost::1234。例如,我的主机文件如下所示:
127.0.0.1 localhost
127.0.1.1 ubuntu-64-desktop
127.0.0.1 code2design.loc localhost
Run Code Online (Sandbox Code Playgroud)
现在我可以在我的 PC 上输入 code2design.loc 来访问我本地版本的 code2design.com。
3)最后将您的浏览器代理改回无,因为您不再需要它。由于现在输入university.loc已设置为使用该隧道。
我会尝试将端口添加到主机文件(127.0.0.1:port
或localhost:port
),如果您担心虚拟主机损坏,您也可以将.loc
TLD更改为真正的.fi
TLD。
所以对你来说它可能是这样的:
127.0.0.1 localhost
127.0.1.1 ubuntu-64-desktop
127.0.0.1 university.fi localhost:1234
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
9995 次 |
最近记录: |