Как подключиться к хранилищу конфигурации на сервере за NAT, если есть доступ по RDP

Вячеслав, разработчик 1С

В статье — инструкция по подключению базы 1С к хранилищу конфигурации, если хранилище не опубликовано в интернет, но опубликовано по TCP в локальной сети клиента.

Как подключиться к хранилищу конфигурации на сервере за NAT, если есть доступ по RDP

 

Дано

1. Требуется работать локально на своём мощном компе и быть подключенным к хранилищу клиента.

2. Клиент ни при каких условиях не хочет поднимать VPN в свою локальную сеть или публиковать хранилище в интернет.

3. У вас есть подключение по RDP к компьютеру в локальной сети клиента, с которого вы можете подключиться к хранилищу.

4. Хранилище конфигурации клиента опубликовано по протоколу TCP.

 

Решение

1. Приобретаете белый ip-адрес у своего провайдера. У меня провайдер domru, у него это добро стоит всего 20 руб. в месяц.

2. Поднимаете у себя на домашнем компе ssh-сервер.

3. С помощью ssh-клиента Putty в своём rdp-сеансе на сервере клиента подключаетесь к своему компьютеру и делаете Remote TCP forwarding для хранилища.

4. Со своего компьютера подключаетесь к хранилищу через проброшенный порт

Плюсом такого решения для клиента является то, что соединение активно, только пока активно ssh-подключение из rdp-сеанса на сервере клиента. Если вам закроют доступ к rdp, то подключаться к хранилищу вы не сможете.

Минусом такого решения для меня является то, что мой домашний комп уязвим для атаки из сети клиента, т.к. свой логин и пароль мне приходится набирать в сеансе rdp и клиенту ничего не стоит их перехватить.

 

Подробнее по пунктам

Поднятие ssh-сервера

У меня Windows 10. Я воспользовался нативным сервером OpenSSH который можно установить с помощью PowerShell.

Запускаем PowerShell с правами администратора и проверяем установлен ли у нас сервер OpenSSH или нет. Для этого выполняем команду:

Get-WindowsCapability -Online | ? Name -like 'OpenSSH.Ser*'

Как подключиться к хранилищу конфигурации на сервере за NAT, если есть доступ по RDP

Как видно из результата команды – сервер у меня уже установлен. Если у вас он не установлен, то выполните команду

Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0

Затем настраиваем службу нашего SSH-сервера. Я решил, что меня волнует безопасность моего компьютера, поэтому сервер я всегда буду стартовать только вручную, когда мне это надо:

Set-Service -Name sshd -StartupType 'Manual'

Если вас безопасность не парит, то можете поставить службу в автозапуск:

Set-Service -Name sshd -StartupType 'Automatic'

Затем стартуем службу:

Start-Service sshd

Проверяем, что 22-й порт брандмауера открыт и прослушивается:

Get-NetFirewallRule -Name *OpenSSH-Server* |select Name, DisplayName, Description, Enabled

Как подключиться к хранилищу конфигурации на сервере за NAT, если есть доступ по RDP

netstat -na| Select-String '0.0.0.0:22'

Как подключиться к хранилищу конфигурации на сервере за NAT, если есть доступ по RDP

Если вы подключены к интернету через роутер, то требуется пробросить какой-нибудь внешний порт на свой компьютер в локальной сети. Я покажу на примере моего роутера tp-link. Для доступа к веб-интерфейсу моего роутера мне нужно перейти в браузере по адресу http://192.168.0.1/ У вас адрес может быть другой.

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

Как подключиться к хранилищу конфигурации на сервере за NAT, если есть доступ по RDP

Далее выполняем проброс случайного порта роутера на 22-й порт нашего компьютера. Я выбрал порт 2020.

Как подключиться к хранилищу конфигурации на сервере за NAT, если есть доступ по RDP

 

Подключение к серверу SSH из сеанса RDP

Заходим по RDP на сервер клиента и скачиваем подходящий клиент Putty.exe → https://putty.org.ru/download.html

Запускаем его и настраиваем подключение:

Как подключиться к хранилищу конфигурации на сервере за NAT, если есть доступ по RDP

В поле Host Name вводите ваш белый ip, который вам выдал провайдер. Порт вводите тот, который пробросили на роутере. У меня это 2020. Сохраняете настройки сессии кнопкой Save. Нажимаете кнопку Open и проверяете, что клиент подключается к вашему домашнему компьютеру. Потребуется ввести логин и пароль пользователя домашнего компьютера.

Если всё получилось, закрываем соединение командой exit.

Теперь требуется сделать обратный проброс порта для того, чтобы мы могли подключится к хранилищу с нашего домашнего компьютера:

Как подключиться к хранилищу конфигурации на сервере за NAT, если есть доступ по RDP

В поле Source Port пишем любой порт, который мы будем использовать в 1С для подключения к хранилищу. У меня это 3333. В поле Destination пишем имя компьютера, на котором развернуто хранилище или localhost, если хранилище находится на том же компьютере, к которому вы подключены по rdp. Стандартный порт хранилища конфигурации 1С – 1542.

Сохраняем настройки подключения на вкладке настроек сессии, открываем SSH соединение по кнопке open, вводим логин и пароль и возвращаемся на свой домашний комп.

 

Подключение к хранилищу через проброшенный порт

Открываем конфигуратор и подключаемся к хранилищу:

Как подключиться к хранилищу конфигурации на сервере за NAT, если есть доступ по RDP

В пути у нас всегда будет localhost т.к. мы в шаге выше сделали проброс 3333 порта нашего домашнего компьютера через ssh туннель на компьютер к которому мы подключены по RDP. 3333 – это “любой порт”, что я пробросил в шаге выше. RepoName – это название опубликованного хранилища конфигурации.

 

Profit

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