Я хотел бы получить доступ к порту SSH моего офисного хоста Linux из дома. К сожалению, хост расположен за маршрутизатором NAT. Таким образом, IP-адрес не является общедоступным. Тем не менее, есть доступ к другому интернет-хосту (серверу), который, к сожалению, является только доступом без полномочий root. Через некоторое время поиска я не нахожу подходящего решения.
Следующая настройка:
- Офисный ПК (linux, root-доступ) за NAT (IP не публичный), но полный доступ в Интернет.
- Сервер ПК (linux, без root-доступа) статический и публичный IP и полный доступ в интернет.
- Домашний ПК (linux, root-доступ) за NAT (IP не публичный), но полный доступ в интернет.
Возможные подключения: Офисный ПК -> Сервер <- Домашний ПК
Невозможно: Офисный ПК <-X- Сервер -X-> Домашний ПК
Ни Домашний ПК, ни Сервер не могут инициировать доступ к Офисному ПК. Но и офисный ПК, и домашний ПК могут инициировать соединения с сервером.
Обратный SSH-туннель невозможен: я попробовал метод, называемый обратным ssh-туннелем. К сожалению, для этого требуется, чтобы для GatewayPorts на сервере было установлено значение «да» в / etc / ssh / sshd_config, где у меня нет доступа с правами root.
В принципе это должно быть возможно:
0) На сервере я запускаю пользовательскую программу, которая прослушивает 2 порта (1 входящий, 1 исходящий)
1) На моем офисном ПК я запускаю другую программу, которая поддерживает соединение TCP открытым для исходящего порта на сервере.
2) Из дома я подключаюсь к входящему порту Сервера.
Там должно быть стандартное решение для этого там.
Какое самое быстрое и чистое решение для решения этой проблемы?
Фрэнк
Ответы:
Позже:
Вы можете сделать следующее: на шаге 1 перенаправить удаленный порт с офисного ПК на сервер (
12345
в качестве примера используется любой порт> 1024). Теперь подключение к 12345 на сервере должно соединить вас с портом 22 на officepc.На шаге 2 перенаправьте порт 23456 с вашего домашнего компьютера на сервер 12345 на сервере (откуда он перенаправляется на officepc: 22, как настроено на шаге 1).
На шаге 3 вы подключаетесь к локальному порту 23456, используя логин вашего офисного ПК . Этап перенаправляется с шага 2 на порт 12345 на вашем сервере и с шага 1 на ваш офисный ПК.
Обратите внимание, что я использую autossh для пересылок, так как это ssh-оболочка, которая автоматически переподключает туннель, если он отключен; однако обычный ssh также будет работать, пока соединение не прерывается.
Возможна уязвимость: любой, кто может подключиться к localhost: 12345 на serverpc, теперь может подключиться к officepc: 22 и попытаться взломать его. (Обратите внимание, что если вы используете сервер SSH, вы должны в любом случае защитить его от базовых защит, которые включены по умолчанию; я рекомендую по крайней мере отключить root-вход и отключить аутентификацию по паролю - см., Например, это )
Изменить : я подтвердил это с той же конфигурации, и он работает.
GatewayPorts no
влияет только на порты, которые открыты для всего мира, а не на локальные туннели. Вот что представляют собой перенаправленные порты:Итак, что касается сетевого стека, то это весь локальный трафик на соответствующих интерфейсах обратной связи (плюс ssh-соединения с serverpc); следовательно,
GatewayPorts
вообще не проверяется.Однако существует директива
AllowTcpForwarding
: если это такno
, эта настройка не будет выполнена, поскольку пересылка вообще не разрешена, даже через интерфейс обратной связи.Предостережения :
Если вы используете autossh и последние ssh, вы можете использовать ssh
ServerAliveInterval
иServerAliveCountMax
для поддержания туннеля. Autossh имеет встроенную проверку, но, очевидно, у него есть некоторые проблемы с Fedora.-M0
отключает это и-oServerAliveInterval=20 -oServerAliveCountMax=3
проверяет, установлено ли соединение - пробует каждые 20 секунд, если оно терпит неудачу 3 раза подряд, останавливает ssh (и autossh создает новое):может быть полезно перезапустить ssh-туннель, если переадресация завершается неудачно, используя
-oExitOnForwardFailure=yes
- если порт уже привязан, вы можете получить работающее соединение SSH, но не переадресованный туннель.~/.ssh/config
рекомендуется использовать для параметров (и портов), в противном случае командные строки становятся слишком многословными. Например:Тогда вы можете использовать только псевдоним сервера:
источник
GatewayPorts no
ограничивает открытые порты, чтобы они были доступны только через интерфейс обратной связи; обратите внимание, что на шаге 2 вы пересылаете по интерфейсу обратной связи (на самом деле, оба пересылки являются «только локальными»), так что это может сработать (AllowTcpForwarding no
в конфигурации sshd это может быть нарушено).GatewayPorts no
; отредактировал ответ. Обратите внимание, что есть другие директивы (такие какPermitOpen
иAllowTcpForwarding
), которые могут нарушить эту настройку: manpagez.com/man/5/sshd_configЕсли вы можете подключиться к ssh к внутреннему серверу из дома и с внутреннего сервера на свою офисную Linux-машину, то из дома вы можете использовать ssh
ProxyCommand
для бесшумного отскока через сервер к внутренней машине черезnc
(netcat)Тогда вы просто
ssh user@internalpc
и молча перенаправляетесь через серверную машину, не требуется открывать порты или туннели с обеих сторонисточник
Установите Robo-TiTO на компьютер, к которому вы хотите получить удаленный доступ к SSH.
Следующие инструкции по установке устарели, так как сайт переехал. Новый URL-адрес https://github.com/formigarafa/robotito
источник
CLIENT_PASSPHRASE = "logmein"
в незашифрованном виде . Это буквально нулевая безопасность - вы делаете дыру размером с грузовик, чтобы каждый мог войти. В отличие от аутентификации с открытым ключом SSH: я аутентифицируюсь по безопасному каналу, используя учетные данные, которые никогда не пересекаются. Кто сейчас держит их компьютер в безопасности?Решение Писквора работает и приятно. Тем не менее, он удерживает открытыми терминалы с висящими оболочками входа в систему. Не очень круто.
Я всегда использовал этот небольшой скрипт, который я написал, чтобы подключиться к серверу и сохранить его подключенным, запустив его в cron:
Могу поспорить, что мы могли бы исправить решение Piskvor, используя более элегантный autossh рядом с, может быть, отдельным экраном или использовать аргументы -NT ssh, чтобы просто поддерживать соединение в фоновом режиме.
источник
homepc
компьютере).Для меня это звучит так, как будто вместо SSH-туннеля вы должны попробовать VPN: тот тип, который работает с использованием внешнего сервера для прокси, например Hamachi . Есть и другие бесплатные программы, подобные этой, но Hamachi - моя любимая.
источник
5.0.0.0/8
сети фактически назначены общедоступные IPv4-адреса, у Hamachi возникли проблемы (если Hamachi работает, вы не можете получить доступ к несколько случайной части Интернета). Кроме того, Hamachi больше не является бесплатным для использования.