
Демон 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][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][portforwarding]
и на странице руководства 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 удаленного пользователя.
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
/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 предоставляет анонимность серверам, работающим как [скрытые сервисы][hidden-service], но также обрабатывает обход NAT.
Преимущества:
Недостатки:
На устройстве и клиентах установите Tor.
sudo apt install tor
На устройстве, которое раскрывается, отредактируйте [/etc/tor/torrc][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][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 Лицензии, либо (по вашему выбору) любой более поздней версии.