在 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...
Run Code Online (Sandbox Code Playgroud)
从而允许同一系统用户在 Subversion ( svnserve) 上下文中被重用为不同的“身份” 。
我将如何编写像svnserve我这样的服务,允许指定隧道的使用以及在这些情况下数据传输的确切方式?特别是svnserve实例如何“知道”通过哪种方式输出数据或读取输入?在这种情况下,这一切是否都是通过stdout和发生的stdin,如果是这样,是否也有区分的方法stderr?
我想象子系统和command=它们使用相同的机制,但如果我错了,请纠正我。
(no-port-forwarding,no-agent-forwarding,no-X11-forwarding,no-pty为了简洁起见,我省略了,但我知道它们以及它们在场景中的用途。)
我当前的 svn 服务器路径是
但我想使用 svn 协议而不是 http
svn://file/repo/test进行 SVN 同步
我需要做什么。
请帮忙。