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

01.06.21

Разработка - Групповая разработка (Git, хранилище)

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

Дано:

  • Требуется работать локально на своём мощном компе и быть подключенным к хранилищу клиента.
  • Клиент ни при каких условиях не хочет поднимать VPN в свою локальную сеть или публиковать хранилище в интернет.
  • У вас есть подключение по RDP к компьютеру в локальной сети клиента с которого вы можете подключиться к хранилищу.
  • Хранилище конфигурации клиента опубликовано по протоколу 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*'

 

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

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

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

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

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

 

 

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

 

 

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

Заходим по RDP на сервер клиента и скачиваем подходящий клиент Putty.exe Ссылка

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


 

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

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

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

 

 

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

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

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

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

 

 

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

Profit

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

Администрирование Хранилище

См. также

1С-программирование DevOps и автоматизация разработки Групповая разработка (Git, хранилище) DevOps для 1С Программист Стажер Платформа 1С v8.3 Платные (руб)

Использования систем контроля версий — стандарт современной разработки. На курсе научимся использованию Хранилища 1С и GIT при разработке на 1С:Предприятие 8. Разберем подходы и приемы коллективной разработки, научимся самостоятельно настраивать системы и ориентироваться в них.

4900 руб.

29.06.2022    10468    84    4    

116

Групповая разработка (Git, хранилище) Программист Руководитель проекта Стажер Бесплатно (free)

Про изменения и новинки в агрегаторе открытых проектов OpenYellow, которые появились с момента его создания: про портал, Github и Telegram

15.07.2024    2389    bayselonarrend    8    

22

Групповая разработка (Git, хранилище) Программист Стажер Бесплатно (free)

О проблемах новых 1С-проектов в общем океане открытого программного обеспечения.

07.07.2024    2791    bayselonarrend    57    

35

Групповая разработка (Git, хранилище) OneScript Программист Платформа 1С v8.3 Бесплатно (free)

Скрипт для работы с SonarQube и локальным репозиторием Git.<br> Цель проекта – возможность выполнить быструю проверку качества кода перед тем, как помещать доработки в рабочее хранилище. В Sonar и Git выгружается не вся конфигурация, а только объекты из заданного списка.<br> https://github.com/vkrivov/go/

02.07.2024    2450    vkrivov@yandex.ru    8    

18

Групповая разработка (Git, хранилище) Программист Платформа 1С v8.3 Конфигурации 1cv8 Россия Абонемент ($m)

Столкнулся с проблемой при загрузке метаданных в СППР из GitLab на сервере 1С под Linux (РЭД ОС 7.3). При загрузке метаданных конфигурации, процесс загрузки длился несколько секунд и "благополучно" (без сообщений об ошибке) завершался. При этом метаданные не загружались.

1 стартмани

02.07.2024    476    0    Live    2    

3

Групповая разработка (Git, хранилище) Программист Стажер Бесплатно (free)

Не знаете, чем бы таким заполнить свой профиль Github? Заполните его своими статьями на Инфостарт! Этот простой workflow сам соберет список ваших последних статей и будет периодически обновлять его для актуализации данных.

08.04.2024    1231    bayselonarrend    2    

33

Групповая разработка (Git, хранилище) Программист Платформа 1С v8.3 1С:ERP Управление предприятием 2 Бесплатно (free)

Доработки 1С:ERP на крупных проектах можно организовать, не внося изменения в саму типовую конфигурацию, а используя только расширения и отдельные «микроконфигурации». Расскажем о том, как это сделать без EDT, используя процесс разработки GitHub Flow.

02.04.2024    6869    Begemoth80    24    

51

Групповая разработка (Git, хранилище) OneScript Системный администратор Программист Бесплатно (free)

Сегодня мы посмотрим на Github Actions - встроенный инструментарий Github для автоматизации рабочих процессов. Разберем, что это такое, зачем и причем тут OneScript.

25.03.2024    2060    bayselonarrend    3    

41
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. user1606647 01.06.21 08:16 Сейчас в теме
Добрый день! Спасибо за статью! Очень интересно, а главное понятно написано!!!
2. pavel06 2 01.06.21 12:38 Сейчас в теме
VPN клиент поднимать не хочет, а RDP доступ к серверу давать хочет. Оригинально защищается.
CSiER; Dipod; +2 Ответить
3. Dipod 114 01.06.21 13:43 Сейчас в теме
(2)К сожалению, такова жизнь. Мотивы клиента мне не известны. Согласовать VPN не удалось.
Sinsinmin; +1 Ответить
4. Yashazz 4762 01.06.21 13:49 Сейчас в теме
А что мешает работать на самом РДП? Прямо оттуда? Всегда так делаю, нареканий у клиентов не вызывало. Зачем ещё какой-то комп к этому припахивать - что, терминальная машина совсем слабенькая и/или сервер у клиента никудышный?
6. Dipod 114 01.06.21 14:02 Сейчас в теме
(4) На этом проекте около 40 программистов, конфигурация ЕРП. RDP сервер тормозит под такой нагрузкой. Я помучался и решил сбежать на свой комп.
7. Yashazz 4762 01.06.21 14:22 Сейчас в теме
(6) Я б попросил клиента ещё один РДП организовать в таком случае) Вытаскивать на свой локальный комп, неважно через что, конфу клиента, страдающего избирательной паранойей, чревато. Да и инфраструктура может подвести - интеграция с техникой какой-либо или сторонним ПО, мало ли... Тоже всё на личный комп пробрасывать да дублировать?)
8. Dipod 114 01.06.21 15:22 Сейчас в теме
(7) У нас эти 40 программистов распределены на 4 терминальных сервера, плюс аналитики, тестировщики и консультанты сверху, которых я не посчитал. На этом ресурсы клиента закончились.
14. Yashazz 4762 01.06.21 17:44 Сейчас в теме
(8) Сурово.

В любом случае способ хороший, может пригодиться. Плюсую.
5. пользователь 01.06.21 14:01
Сообщение было скрыто модератором.
...
9. starik-2005 3061 01.06.21 15:22 Сейчас в теме
У меня провайдер domru, у него это добро стоит всего 20 руб. в месяц.
1. А общий прайс? У меня 100 мб/с стоит 199, а белый IP - 150. Итого 349 в месяц. А у Вас там инет стоит 600 рублей, поэтому 20 рублей за IP погоды не сделают.

2. Если у Вас есть роутер собственный, то у вендора 99% есть облако, которое может дать Вам доступ к Вашему роутеру по своему внутреннему DNS (фактически, домен второго уровня в облаке вендора). В итоге будет что-то типа klientxxxyyy.kinetick.com, а дальше внутри себе делаете проброску нужного порта.
10. Dipod 114 01.06.21 15:25 Сейчас в теме
(9)
1. Я плачу 650 руб/мес за 250 мб/с. Плюс 20 руб/мес за белый ip.

2. Спасибо, не знал.
11. starik-2005 3061 01.06.21 15:29 Сейчас в теме
(10)
за 250 мб/с
Зачем Вам столько? А пинг какой? (2ip.ru, например):
Прикрепленные файлы:
12. Dipod 114 01.06.21 15:34 Сейчас в теме
(11) скорость такая? - чтоб было :-) Хочется :-)
Прикрепленные файлы:
13. starik-2005 3061 01.06.21 16:51 Сейчас в теме
Оставьте свое сообщение