Как подключиться к хранилищу конфигурации на сервере за 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С-разработчиков.

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

Основы командной разработки на 1С. Использование систем контроля версий при разработке на платформе 1С:Предприятие 8

4900 руб.

29.06.2022    9585    78    4    

112

Обновляемый список последних статей Инфостарт для профиля Github

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

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

08.04.2024    994    bayselonarrend    2    

31

Процесс разработки с использованием GIT и расширений для 1С:ERP. Без EDT

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

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

02.04.2024    5410    Begemoth80    24    

47

Особенности национального Workflow: Github Actions и OneScript

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

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

25.03.2024    1672    bayselonarrend    3    

38

Автоматизация процесса разработки с помощью сервиса GitFlic

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

GitFlic – первая в России полностью самостоятельная реализация сервиса для хранения репозиториев с исходным кодом. За три года разработки сервис GitFlic стал полноценным инструментом, которым можно заменить GitLab, GitHub и BitBucket. Расскажем о том, как выстроить в GitFlic процесс автоматического тестирования, статического анализа кода и сборки приложений.

05.03.2024    2209    user1989937    6    

16

OpenYellow - рейтинг открытых GitHub репозиториев для платформы 1С:Предприятие

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

Обновляемый топ GitHub репозиториев для 1С по всем языкам программирования и еще немного рассуждений про open-source.

05.02.2024    4159    bayselonarrend    15    

64

Насколько глубок 1С-ный GitHub?

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

Open-source проекты - важная часть мира программного обеспечения. 1С привычно держится немного в стороне от глобальных трендов, но бросить холодный статистический взгляд на положение дел мне показалось небезынтересным.

22.01.2024    8215    bayselonarrend    50    

87

TCP прокси-сервер хранилища конфигурации 1С

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

Продолжение истории с прокси хранилища, но уже не на HTTP, а на TCP и без падений по памяти веб-сервера. Проверяем комментарии хранилища, вызываем веб-хуки, старты пайплайнов, gitsync по событию помещения версии в хранилище. И все это полностью на знакомом и понятном OneScript.

17.01.2024    3166    kamisov    17    

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

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

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

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