我使用的是 Debian 服务器。
我使用 SVN 的用户 svn。svn 的主目录是/home/svn
。所有存储库都在 中/srv/svn
。
其中/home/svn/.ssh
有一个文件authorized_keys
。此文件包含以下行:
command="/usr/bin/svnserve -t -r /srv/svn/ --tunnel-user=<user>",no-port-forwarding,no-pty,no-agent-forwarding,no-X11-forwarding ssh-rsa AAAA<...>NhQ== <user>
svn 拥有/srv/svn
和/srv/svn/<repo>
。
当我尝试使用给定的 ssh 密钥连接到服务器时,它可以工作,所以应该没有问题。但是当我尝试使用以下代码打开存储库时(我在 Windows 上使用带有 Pageant 的 TortoiseSVN)
svn+ssh://<user>@example.com/<repo>
它要求我输入密码。
我已尝试使用服务器上的现有用户 <user> 和不存在的用户 <user> 执行此操作。均无效。
我应该怎么做才能使其正常工作?我是否遗漏了什么?
编辑:好的,新信息!
我现在已经设置了权限。猜猜怎么着……svn 可以登录!<user> 不能。
但是将用户 <user> 添加到操作系统并添加主目录并将 auth 文件复制到他的目录中是可行的。现在 <user> 也可以登录了。
这不是我真正想要的。是否可以只使用一个文件并使用操作系统中不存在的用户?
答案1
我要尝试做的第一件事是正确设置目录/文件的权限
find /home/svn/.ssh -type d -exec chmod 700 {} \;
find /home/svn/.ssh -type f -exec chmod 600 {} \;
chown -R svn:svn /home/svn/.ssh
然后尝试登录。
如果这不起作用,请发布sshd 的内容或类似ssh -v svn@blah
内容/var/log/messages
/var/log/secure
/var/log/auth.log
登录成功示例
Feb 1 08:49:59 localhost sshd[25316]: Accepted publickey for root from 127.0.0.1 port 34935 ssh2
Feb 1 08:49:59 localhost sshd[25316]: pam_unix(sshd:session): session opened for user root by (uid=0)
登录失败示例
Feb 1 08:54:09 localhost sshd[25478]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=localhost user=root
Feb 1 08:54:11 localhost sshd[25476]: error: PAM: Authentication failure for root from localhost
并ssh -v
显示关键故障
debug1: Next authentication method: publickey
debug1: Trying private key: .ssh/blah.pem
debug1: read PEM private key done: type RSA
debug1: Authentications that can continue: publickey,keyboard-interactive
验证显示的密钥ssh -v
是否是您尝试使用的密钥,并且表明该密钥已成功处理并发送到服务器