Текущий сценарий:
Прямо сейчас, чтобы иметь возможность работать с нашим репозиторием git, нам действительно нужно использовать VPN, поскольку сервер репо не имеет общедоступного IP-адреса.
Цель:
То, что я пытаюсь выполнить состоит в том, чтобы настроить сервер с общедоступным IP-адресом и разрешить Git-подключаться через него к серверу репо (частный IP-адрес).
Это можно легко сделать, используя ProxyCommand в локальных конфигурациях пользователя, но для того, чтобы облегчить жизнь пользователя Я ищу что-то, что не требует специальной настройки со стороны пользователя.
Кто-нибудь может помочь? Спасибо.
Прежде всего,Я действительно думаю, что вам следует использовать подход ProxyCommand. В конечном итоге это облегчит жизнь каждому.
При этом, что вы * могли * сделать, так это настроить пользователя git на внешнем узле для передачи команды git внутреннему узлу. Прежде всего, для этого потребуется поместить что-то подобное в / etc / ssh / sshd_config на внешнем узле.
Match User git
ForceCommand /usr/local/bin/git_wrapper
AllowTcpForwarding no
PermitTTY no
Со сценарием git_wrapper , выглядящим примерно так.
#!/bin/bash
case "$SSH_ORIGINAL_COMMAND" in
git*)
ssh -o BatchMode=yes git@internal.host "$SSH_ORIGINAL_COMMAND"
;;
*)
echo "Git only"
;;
esac
Вам необходимо убедиться, что external.host:~git/.ssh/known_hosts содержит ключ хоста для внутреннего хоста.
Затем есть часть о том, что external.host может войти в систему как (скрытый). Это можно настроить, разрешив пользователям включить переадресацию агента, или предоставив (скрытый) ключ ssh в (скрытый). Ни один из этих параметров не влияет на безопасность.
Предупреждение: Обратите внимание, что ограничения на $ SSH_ORIGINAL_COMMAND
в основном направлен на то, чтобы ваши пользователи случайно не сделали больше, чем следовало бы. Если вы не доверяете своим пользователям запускать произвольные команды ни на external.host, ни на internal.host, не применяйте этот подход.
Кстати, я сказал, что я думаю, вам действительно стоит подход ProxyCommand? Либо так, либо установив какую-то переадресацию на сетевом уровне.