[О блоге] [наверх] [пред] [2025-03-11 14:36:52+03:00] [3136e07d90bf973abaf9fda3bad7e343a58c0be6]
Темы: [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.