在svn+ssh登录中,电子邮件地址作为用户名是否可行?

7

我需要允许使用电子邮件地址作为用户名来访问svn仓库。通过将电子邮件地址中的“@”替换为“$”,我可以轻松地通过ssh登录服务器,如下所示:

ssh user.name$mydomain.com@mydomain.com

不幸的是,对于 svn+ssh 协议并不适用。以下命令无法起作用:

svn ls svn+ssh://user.name$mydomain.com@mydomain.com/home/accountname/data/svn/repos

有人知道这通常是如何完成的吗?

3个回答

5

由于这是一个URL地址,你尝试过对@符号进行URL编码吗?我不知道这是否有效,但你可以尝试使用user.name%40mydomain.com


哈!URL编码不起作用了,但是需要的是%(而不是$)。因此,登录字符串实际上是:svn ls svn+ssh://user.name%mydomain.com@mydomain.com/home/accountname/data/svn/repos如果没有这个建议,我就找不到它了。谢谢! - Andrew
奇怪。我本来以为你不能用这两个字符中的任意一个($对于ssh或%对于svn+ssh)代替@字符。实际上,我认为SSH命令中的$mydomain将被替换为空字符串,因此在那种情况下你最终会得到user.name.com。但是无论如何,如果它能够正常工作,那就很棒! - JW.

0

正如之前的回答所说,如果你在一个UNIX系统上,你的shell程序可能会尝试替换$符号,就好像它是一个变量一样。尝试通过在$符号前面加上反斜杠来转义它,就像这样:

svn ls svn+ssh://user.name\$mydomain.com@mydomain.com/home/accountname/data/svn/repos

或者,如果您在URL周围使用单引号,则BASH或您正在使用的任何shell都不应尝试替换$。

svn ls 'svn+ssh://user.name$mydomain.com@mydomain.com/home/accountname/data/svn/repos'

-1

你确定 $ 符号没有被你所使用的 shell 替换掉吗?而且 SVN 只有用户名,而不是用户+电子邮件进行身份验证。我想这样做行不通。


我一直小心地在同一个 shell 中以相同的方式创建 ssh 连接和 svn 连接,所以我本来期望凭据也会被同样处理。我尝试过删除“@mydomain.com”(以及许多其他变化),但结果都是一样的。问题在于,在我的主机上,用户名就是电子邮件地址。我只是不知道身份验证是由 svn 管理还是直接通过 ssh 或者介于两者之间的某个地方传递的。 - Andrew

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接