如何在 Subversion 中使用 Linux 用户名和密码?

如何在 Subversion 中使用 Linux 用户名和密码?

我想设置 Subversion 存储库,以便可以使用与 ssh 登录相同的用户名和密码来访问存储库。我设法让登录工作,以便需要正确的用户名,但它接受任何密码。我如何让它也需要有效的密码?

我正在运行带有“标准模块”、Apache2、Subversion 和 libapache2-mod-authnz-external 的 Ubuntu 服务器 8.04.2。此外,我还发现了名为验证码以协助身份验证。

以下是配置中的相关部分:

/etc/apache/apache2.conf

AddExternalAuth pwauth /usr/local/bin/pwauth
SetExternalAuthMethod pwauth pipe
AddExternalGroup unixgroup /usr/local/bin/unixgroup
SetExternalGroupMethod unixgroup environment

/etc/apache/mods-available/dav_svn.conf:

AuthType Basic
AuthBasicProvider external
AuthExternal pwauth
GroupExternal unixgroup
AuthName "Subversion repository"
Require group users
Require user myaccount

/etc/pam.d/pwauth:

auth    required        pam_succeed_if.so user=www-data
account required        pam_localuser.so

pwauth 的 config.h:

#define PAM                     /* Linux PAM or OpenPAM*/
#define UNIX_LASTLOG            /**/
#define HAVE_LASTLOG_H          /**/
#define NOLOGIN_FILE "/etc/nologin"     /**/
#define MIN_NOLOGIN_UID 1               /**/
#define CHECK_LOGIN_EXPIRATION          /**/
#define CHECK_PASSWORD_EXPIRATION       /**/
#define SERVER_UIDS 33          /* user "www-data" */
#define MIN_UNIX_UID 500        /**/
#define SLEEP_LOCK "/var/run/pwauth.lock"

(缺了点什么吗?)

编辑:我知道潜在的安全问题,但我想知道为什么这种设置不起作用。

答案1

我之前已经设置过了,Subversion 的工作方式是,在会话期间它会提示您输入密码数百次。

(为此,只需将您的 subversion 客户端连接到svn+ssh://用户名@服务器名/路径/to/repo

答案是使用 ssh 密钥。

设置你的私钥/公钥对,并将你的公钥上传到你的 ~/.ssh/authorized_keys 文件,但在其前面加上“command="/usr/bin/svnserve -t -r /path/to/repo"

然后使用上面提到的 svn+ssh 再次连接

答案2

不要这样做。不要在可能不太安全的应用程序中使用登录密码。像 Brent 说的那样使用 ssh 密钥。

答案3

完全避免使用 apache,并使用 svn+ssh 协议

相关内容