Primeiro, observe que command= não chama um subsistema SSH. Ele simplesmente executa o comando como se fosse dado na linha de comando do cliente SSH; por exemplo,
ssh yourhost "svnserve -t --tunnel-user=alice"
ssh yourhost "git upload-pack /pub/git/myproject.git"
ssh yourhost "ls -la"
Os exemplos acima devem deixar mais claro que a comunicação com svnserve ou git ou ls acontece sobre o mesmo stdio (stdin / stdout / stderr) que qualquer outra interação SSH. Para SVN e Git, o cliente ssh serve apenas como uma ferramenta para invocar comandos remotamente.
Os subsistemas "reais", conforme configurados usando a opção Subsystem em sshd_config , não são muito diferentes. A única grande diferença é que eles podem ser invocados por um nome estático e conhecido, em vez de depender do shell de login remoto (bash, zsh, & c) para localizar o executável correto. Por exemplo, o servidor SFTP pode ser /usr/lib/ssh/sftp-server em uma máquina, MULTINET_COMMON_ROOT:[MULTINET]SFTP-SERVER2.EXE em outra, embutido em sshd na terceira ( Subsistema sftp interno-sftp ), mas em todos os casos os clientes ainda podem encontre-o usando o nome sftp .
Pelo menos no OpenSSH, subsistemas podem ser escritos como programas normais que se comunicam com o cliente via stdin / stdout / stderr. Parece que não é permitido passar argumentos de linha de comando arbitrários, portanto, não é possível configurar apenas um subsistema svnserve para todos os usuários.