Анонимный SSH+Git

Что: 3136e07d90bf973abaf9fda3bad7e343a58c0be6

Когда: 2025-03-11 14:36:52+03:00

Темы: crypto git web

Анонимный SSH+Git

https://gameoftrees.org/code.html
https://gameoftrees.org/gotsh.1.html
https://git-scm.com/docs/git-shell
Как-то я заметил, что в Game Of Trees (реализация Git от OpenBSD
разработчиков) весь исходный код доступен через ssh://-протокол,
анонимно, без регистрации (и SMS), никаких https://. Особо я никогда
не задавался вопросом можно ли "анонимный" SSH предоставить как либо?

Но в их документации на всё это есть намёки. Для "анонимного"
пользователя достаточно выставить в sshd_config (OpenSSH):

    Match User anongit
        PasswordAuthentication yes
        PermitEmptyPasswords yes
        DisableForwarding yes
        PermitTTY no

ну и убрать пароль у этого пользователя. В качестве shell-а выставить
git-shell, чтобы ограничить его возможности только работой с git-ом.
Создать git-shell-commands/no-interactive-login чтобы явно вообще
запретить интерактивную работу в git-shell.

Я не использую got, но в его gotd можно указать read-only права доступа.
А вот для обычного git-а git-shell-у ничего такого не указать. В
исходном коде git-shell можно закомментировать строчку в командой
разрешающей загрузку патчей, Но я пока решил задачу с read-only доступом
просто помещением anongit в группу git, для которой не даются права на
запись в репозитории.

И я убрал HTTP/HTTPS протокол для Git репозиториев у себя. Это не
связано с моим недавним (3342002daf11a729fc4591577a72b81d8cfda5df)
очередным постом про HTTPS, а просто так совпало по времени. Git и так
есть, OpenSSH и так есть: почему бы их и не использовать для случаев,
когда нужна криптографическая защита протокола? HTTPS излишен. Плюс
никакого PKI не надо, на который намекает TLS.

комментарий 0:

From: kmeaw
Date: 2025-03-11 17:58:44Z

Вот только если ходить по SSH на git.stargrave.org по IPv4, то DNS отдаст два
адреса, на которых разные SSH host keys, что ломает TOFU.

А по IPv6 будут тоже два адреса, но на одном из них не отвечает 22/tcp.

комментарий 1:

From: Sergey Matveev
Date: 2025-03-11 18:21:45Z

*** kmeaw@kmeaw.com [2025-03-11 18:00]:
>Вот только если ходить по SSH на git.stargrave.org по IPv4, то DNS отдаст два
>адреса, на которых разные SSH host keys, что ломает TOFU.

Да, есть такое. Наверное единственный вариант корректный это везде (на
www.git... и в документации к софтам) явно перечислять вереницу
серверов: master.git.stargrave.org, slave.git.stargrave.org,
master.git.cypherpunks.su, slave.git.cypherpunks.su (мало ли что там с
.su или .org доменом внезапно станет). А просто git.-домен использовать
только для git:// протокола.

>А по IPv6 будут тоже два адреса, но на одном из них не отвечает 22/tcp.

Вот он зараза! Проверил с ещё одной VPS: действительно, трафик SSH не
ходит. Ни в одну, ни в другую стороны, судя по tcpdump. Я то дохожу до
него через WireGuard туннель, через который и маршрут по BGP передаётся,
поэтому и не замечаю. Буду сейчас писать в техподдержку. Если окажется
что SSH у них по IPv6 не ходит, то значит снова надо куда-то будет
переезжать, что уже, конечно, порядком надоедает. Спасибо за обнаружение
проблемы!

комментарий 2:

From: Sergey Matveev
Date: 2025-03-11 20:56:33Z

*** Sergey Matveev [2025-03-11 21:21]:
>Вот он зараза! Проверил с ещё одной VPS: действительно, трафик SSH не
>ходит. Ни в одну, ни в другую стороны, судя по tcpdump. Я то дохожу до
>него через WireGuard туннель, через который и маршрут по BGP передаётся,
>поэтому и не замечаю.

Всё оказалось совсем наоборот. Я подумал, что VPS-ка с :25-адресом не
работает, которая у меня за slave отвечает. А оказалось, что всё
наоборот и это мой основной IPv6 канал (через другую VPS) не пускает
трафик по 22-му TCP порту. По соседним портам всё ok. Ещё один человек
сегодня сообщил, что до :25-ого адреса может ходить спокойно, но не до
моей /48 сети.

Написал им в техподдержку. Это уже второй раз, когда с этой /48 IPv6
сетью возникают проблемы. Прежде перестал работать SMTP.