7

Я работаю в университете в качестве научного сотрудника. Часто я хотел бы подключиться из дома к университетским ресурсам через http или ssh, но они заблокированы от внешнего доступа. Поэтому у них есть интерфейсный ssh-сервер, на котором мы можем подключаться к ssh и оттуда к другим хостам. Для доступа по http они советуют настроить ssh-туннель следующим образом.

ssh -L 1234:proxyserver.university.fi:8080 publicsshserver.university.fi

и установите настройки прокси вашего браузера, чтобы они указывали на порт 1234

Все хорошо и работает, но я не хотел бы, чтобы весь мой интернет-трафик проходил через этот прокси-сервер, и каждый раз, когда я хочу подключиться к университету, мне приходится делать эти шаги снова.

Что бы я хотел:

  • Настройте ssh-туннель каждый раз, когда я вхожу в компьютер У меня есть сертификат, поэтому пароли не нужны
  • Иметь способ перенаправить некоторые домены подстановки всегда через ssh-сервер в первую очередь. Так что, когда я набираю intra.university.fi в моем браузере, прозрачно запрос проходит через туннель. То же самое, когда я хочу ssh в другой ресурс в университете

Это возможно? Что касается http, я думаю, что, возможно, мне следует настроить свой собственный локальный прозрачный прокси, чтобы это было легко сделать. Как насчет части SSH?

7 ответов7

7

Для этого я использую файл Proxy Auto-Config (PAC). Я бы вставил свой здесь, но в Википедии есть хороший пример файла.

В вашем браузере укажите «Использовать автоконфигурацию прокси из» на указанный файл (возможно, размещенный на общем веб-сервере). Работает практически в каждом полуприличном браузере.

Обратите внимание, что вам все равно нужно настроить туннели 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() + '.');

Затем перейдите к расширенным сетевым настройкам Firefox и укажите его в этом файле. В случае успеха вы увидите сообщение "PAC загружен" в консоли JavaScript (Ctrl+Shift+J). Если вы не используете Firefox, удалите строки "оповещения".

Это довольно простой PAC, но он должен помочь вам на вашем пути. Мой также анализирует IP-маски для определения внутренних / внешних служб и т.д.

Дайте нам знать, как вы поживаете.

5

Это действительно легко сделать. Я все время использую его для доступа к базе данных нашего производственного веб-сервера.

1) Первая часть была вопросом, который я задал немного назад.

Вы можете использовать псевдоним в себе ~/.bashrc.

Добавьте эту строку

alias university_ssh="ssh -L 1234:proxyserver.university.fi:8080 publicsshserver.university.fi" 

И перезагрузите файл bashrc с исходным кодом ~/.bashrc

И теперь вам нужно всего лишь ввести university_ssh для ssh на ваш сервер базы данных.

2) Затем вам нужно отредактировать ваш файл /etc /hosts, чтобы добавить University.loc (.loc - поддельный TLD), и указать, что он указывает на localhost::1234. Например, мой файл hosts выглядит так:

127.0.0.1       localhost
127.0.1.1       ubuntu-64-desktop
127.0.0.1       code2design.loc    localhost

и теперь я могу набрать code2design.loc для доступа к моей локальной версии code2design.com на моем ПК.

3) Последнее изменение прокси вашего браузера обратно на ничто, так как он вам больше не нужен. С тех пор, как набирается University.loc, теперь используется этот туннель.

обновленный

Я попытался бы добавить порт в файл hosts (127.0.0.1:port или localhost:port), и вы также можете изменить .loc на настоящий домен .fi если вас беспокоит поломка виртуальных хостов.

Так что для вас это может выглядеть так:

127.0.0.1       localhost
127.0.1.1       ubuntu-64-desktop
127.0.0.1       university.fi    localhost:1234
1

FoxyProxy (http://foxyproxy.mozdev.org/) решает проблему автоматического выбора прокси. Он предназначен именно для этой цели, но, конечно, специфичен для Firefox.

1

Отказ от ответственности: не проверял это, просто идея.

Возможно, вы могли бы заставить частные домены использовать «прокси», просто отредактировав конфигурацию хоста в вашей локальной системе. Если вы вручную указали все домены на localhost и установили туннель, не будет:

http://privateaccess.tld:1234

Отправить запрос на:

localhost:1234

Который на самом деле является портом перенаправления на прокси-сервер внутренней сети. Запрос по-прежнему должен относиться к тому же домену, поэтому прокси-сервер должен отвечать правильно.

Или мне так кажется. Опять просто идея.

0

Самый простой способ - добавить команду ssh, которая подключается к серверу, в ваш ~/.bash_profile

Затем создайте отдельный профиль в Firefox, который использует эту настройку прокси, выполнив

$ firefox -profilemanager

Вы можете создать ярлык на рабочем столе, который работает

firefox -P ProfileName -no-remote

Команда no-remote позволяет вам запускать несколько экземпляров Firefox одновременно. Убедитесь, что вы настроили параметры прокси в этом новом профиле.

Таким образом, когда вы захотите использовать любой университетский ресурс, просто откройте этот альтернативный профиль Firefox.

0

Попробуйте настроить SOCKS-прокси с помощью ssh (ssh -D <portnumber> publicsshserver.university.fi) и настроить свой браузер на использование 127.0.0.1 и <portnumber> качестве прокси. Затем вы можете добавить домены, для которых он должен или не должен использовать прокси. Для других сервисов (например, vnc) вы можете использовать tsocks, чтобы он использовал ваш туннель.

0

Вы, вероятно, должны рассмотреть использование VPN вместо просто ssh для этой проблемы. Посмотри в openvpn.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .