Назад | Перейти на главную страницу

Как SSH-шлюз перенаправляет пользователя git на gitserver?

Я пытаюсь настроить доступ ssh / git через шлюз ssh, но поиск в Google пуст. По сути, я хочу, чтобы любое соединение с моим ssh-шлюзом от пользователя git было перенаправлено на мой ssh-сервер, чтобы я мог удаленно выполнять push и pull. Однако, если какой-либо другой пользователь подключается, я хочу, чтобы он вошел в систему как обычно.

internet--(git)-->gate--(git)--> git-server

internet--(user)-->gate

Любая помощь или совет будут очень благодарны.

Один из способов сделать это на стороне клиента - добавить в ваш .ssh / config следующее:

Host git.life-hack.org
    HostName          git.life-hack.org
    ProxyCommand      ssh darkclown@www.life-hack.org nc %h %p
    User              git

Но я надеялся, что будет способ сделать эту серверную часть.

Я предполагаю, что вы говорите о Linux и OpenSSH. Пожалуйста, сообщите, если это не так.

Я понимаю, что git-server недоступен напрямую из Интернета. Я не думаю, что вы можете делать то, что предлагаете автоматически, просто используя SSH.

Предположим, что шлюз находится на 2.2.2.2 (общедоступный IP), а git-server - на 10.10.10.10 (RFC1918)

В зависимости от того, чего именно вы пытаетесь достичь и каковы ограничения, вы можете:

1) попросите пользователя, подключенного к git-серверу, сначала перенаправить порт:

ssh -N -L2222:10.10.10.10:22 user@2.2.2.2

а затем они могут войти как:

ssh -p2222 git@localhost

2) на шлюзе вы можете перенаправлять соединения, сделанные с 2.2.2.2:2222 на 10.10.10.10:22, чтобы ваш пользователь входил в систему как: ssh -p2222 git@2.2.2.2

Это потребует выполнения нескольких команд на воротах:

# enable forwarding
echo -n 1 > /proc/sys/net/ipv4/ip_forward
# DNAT packets destined for 2.2.2.2:2222 to 10.10.10.10:22
iptables -A PREROUTING -d 2.2.2.2 -p tcp --dport 2222 -j DNAT --to-destination 10.10.10.10:22
# allow responses from 10.10.10.10 to get through
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
# allow forwarding connections to 10.10.10.10:22
iptables -A FORWARD -p tcp --dport 22 -d 10.10.10.10 -j ACCEPT

На git-сервере делать нечего.