В OpenSSH можно объявить подсистему в файле конфигурации (/etc/ssh/sshd_config
) или заставить команду, такую как svnserve
выполнить, включив ее в строку authorized_keys
для определенного ключа, например так:
command="svnserve -t --tunnel-user=alice" ssh-dss AAAA...
command="svnserve -t --tunnel-user=bob" ssh-dss AAAA...
тем самым позволяя одному и тому же системному пользователю повторно использоваться для разных "идентификаторов" в контексте Subversion (svnserve
).
Как мне написать такой сервис, как svnserve
, позволяющий указать использование туннеля и как именно данные передаются в этих случаях? В частности, как экземпляр svnserve
"знает", каким образом выводить данные или читать ввод? Все ли это происходит через stdout
и stdin
в таком случае, и если так, будет ли способ отличить stderr
?
Я полагаю, что подсистема и command=
используют один и тот же механизм, но, пожалуйста, исправьте меня, если я ошибаюсь.
(Я оставил no-port-forwarding,no-agent-forwarding,no-X11-forwarding,no-pty
для краткости, но я знаю о них и об их использовании в сценарии.)