
Демон SSH-соединений для Debian/Raspbian/Ubuntu и т.д.
sidedoor поддерживает SSH-соединение или туннель с помощью демона-скрипта оболочки.
Основной вариант использования — поддержание удаленного перенаправления портов на локальный SSH-сервер (или другой порт). Таким образом, локальное устройство может быть доступно без использования входящих соединений, которые могут быть заблокированы NAT или брандмауэром, или иным образом непрактичны для мобильных устройств.
SSH-клиенты могут подключаться к устройству через обратный SSH-прокси, к которому sidedoor прокладывает туннель. Этот прокси-сервер может быть недоверенным и управляться третьей стороной или облачным сервисом.
sidedoor включает SSH keepalives и повторяет попытки SSH с экспоненциальной задержкой. Чтобы переподключиться как можно скорее, он сбрасывает задержку, когда поднимается (или изменяется) сетевой интерфейс.
Другие варианты использования:
Вы используете sidedoor? Сообщения об ошибках, запросы функций — пожалуйста, открывайте issue! Приветствуются pull request'ы.
sidedoor упакован для Debian и систем на основе Debian, таких как Raspbian, Ubuntu и VyOS/EdgeOS, но должен работать в любой POSIX-среде с SSH-клиентом (OpenSSH).
Если sidedoor находится в репозиториях вашего дистрибутива (Debian 9+, Ubuntu 17.04+), просто установите его с помощью менеджера пакетов.
sudo apt install sidedoor
В противном случае вы можете вручную скачать deb-пакеты со страницы релизов.
Чтобы предоставить пользователю sidedoor полный доступ root, установите пакет sidedoor-sudo.
Удаленный сервер и перенаправления портов настраиваются в /etc/default/sidedoor. Файлы конфигурации SSH находятся в каталоге /etc/sidedoor.
Настройте REMOTE_SERVER и OPTIONS в /etc/default/sidedoor.
Некоторые аргументы для передачи в OPTIONS см. в записи блога
Local and Remote Port Forwarding Explained With Examples
и на странице руководства ssh.
Отредактируйте файлы конфигурации SSH в /etc/sidedoor.
id_rsa: Приватный ключ SSH для доступа к удаленному серверу.
Можно использовать ssh-keygen для создания этого ключа
(нажмите y при запросе на перезапись существующего файла):
sudo ssh-keygen -t rsa -N '' -f /etc/sidedoor/id_rsa
Соответствующий открытый ключ id_rsa.pub необходимо включить в файл
~/.ssh/authorized_keys удаленного пользователя.
/etc/ssh/sshd_config.
ChallengeResponseAuthentication no и PasswordAuthentication no).ListenAddress ::1 и ListenAddress 127.0.0.1).sshd, например,
sudo service ssh reload.ssh_client_config_example и включите его в ~/.ssh/config клиента,
чтобы легко получать доступ к туннелированному SSH-серверу
с помощью ssh, scp, rsync и т.д.sidedoor задуман как легковесное решение для туннелирования портов с минимальными зависимостями, но существуют некоторые альтернативы с большим количеством функций.
Tor предоставляет анонимность серверам, работающим как скрытые сервисы, но также обрабатывает обход NAT.
Преимущества:
Недостатки:
На устройстве и клиентах установите Tor.
sudo apt install tor
На устройстве, которое раскрывается, отредактируйте /etc/tor/torrc
для создания скрытого сервиса на порту 22.
HiddenServiceDir /var/lib/tor/sshd/
HiddenServicePort 22 127.0.0.1:22
HiddenServiceAuthorizeClient stealth client
Замените "client" разделенным запятыми списком имен клиентов для генерации нескольких секретов авторизации.
Затем перезагрузите Tor и получите onion-имя хоста и данные авторизации.
sudo service tor reload
sudo cat /var/lib/tor/sshd/hostname
На клиентах отредактируйте /etc/tor/torrc
чтобы добавить onion-имя хоста и данные авторизации, указанные в файле hostname.
HidServAuth <hostname>.onion <secret>
Затем перезагрузите Tor и выполните torsocks ssh <hostname>.onion или установите ProxyCommand
в файле ~/.ssh/config.
ProxyCommand torsocks nc <hostname>.onion 22
autossh, как и sidedoor,
запускает ssh и перезапускает его по мере необходимости.
Некоторые различия включают:
sidedoor — это минималистичный демон-скрипт оболочки. autossh — это более обширная и настраиваемая программа на C.
sidedoor включает SSH keepalives
(ServerAliveInterval и ServerAliveCountMax),
которые доступны в современных версиях OpenSSH.
autossh мониторит ssh, отправляя данные через
цикл перенаправления портов (эта функция предшествует SSH keepalives),
хотя это можно отключить опцией -M 0.
sidedoor предназначен для автоматического запуска в качестве службы, поэтому пакет включает init/systemd-скрипты и файлы конфигурации. autossh не включает init/systemd-скрипт (баг Debian #698390).
sidedoor отключает удаленные команды и выделение псевдо-tty. Для интерактивного использования рассмотрите autossh с SSH keepalives или Mosh.
sidedoor всегда повторяет попытку, если ssh завершается с ненулевым статусом выхода.
autossh не повторяет попытку, если ssh завершается слишком быстро при первой попытке,
что может произойти при нарушении сетевого подключения или разрешения DNS,
особенно на мобильных устройствах.
И sidedoor, и autossh имеют логику задержки повтора.
sidedoor сбрасывает задержку повтора при поднятии сетевого интерфейса,
чтобы попытаться переподключиться как можно скорее, путем получения SIGUSR1
от скрипта if-up.d. autossh не имеет привязок к состоянию сети.
Copyright 2015-2017 Dara Adib.
Эта программа является свободным программным обеспечением: вы можете распространять ее и/или изменять ее в соответствии с условиями GNU General Public License, опубликованной Free Software Foundation, либо версии 3 Лицензии, либо (по вашему выбору) любой более поздней версии.
Эта программа распространяется в надежде, что она будет полезной, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ; без даже подразумеваемой гарантии ТОВАРНОЙ ПРИГОДНОСТИ или ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЕННОЙ ЦЕЛИ. См. GNU General Public License для получения более подробной информации.
Вы должны были получить копию GNU General Public License вместе с этой программой. Если нет, см. https://www.gnu.org/licenses/.
known_hosts: SSH-ключ хоста удаленного сервера.
Необязательно, предоставьте удаленный доступ локальному пользователю sidedoor, добавив открытый(ые) ключ(и) SSH в файл /etc/sidedoor/authorized_keys.
/etc/sidedoor/authorized_keys является символической ссылкой на
~sidedoor/.ssh/authorized_keys.
Пакет sidedoor-sudo, если он установлен, предоставляет полный доступ root
этому пользователю.
Перезапустите службу sidedoor для применения изменений.
sudo service sidedoor restart