ssh 로그인에서와 동일한 사용자 이름과 암호를 사용하여 저장소에 액세스할 수 있도록 Subversion 저장소를 설정하고 싶습니다. 올바른 사용자 이름이 필요하도록 로그인 작업을 수행했지만 모든 암호를 허용합니다. 유효한 암호도 요구하도록 하려면 어떻게 해야 합니까?

"표준 모듈", Apache2, Subversion 및 libapache2-mod-authnz-external과 함께 Ubuntu 서버 8.04.2를 실행하고 있습니다. 또한 인증에 도움이 되는 pwauu 라는 유틸리티를 찾았 습니다.

다음은 구성의 관련 부분입니다.

/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"

(뭔가 빠진건가?)

편집: 잠재적인 보안 문제에 대해 알고 있지만 이 설정이 작동하지 않는 이유를 알고 싶습니다.

answer

나는 이것을 전에 설정했고 Subversion이 작동하는 방식은 세션 동안 수백 번 암호를 묻는 메시지를 표시합니다.

(이렇게 하려면 Subversion 클라이언트를 svn+ssh:// [email protected] /path/to/repo 에 연결하기만 하면 됩니다 )

답은 ssh 키를 사용하는 것입니다.

개인/공개 키 쌍을 설정하고 공개 키를 ~/.ssh/authorized_keys 파일에 업로드하되 "command="/usr/bin/svnserve -t -r /path/to/repo" 접두사를 붙입니다.

그리고 위에서 언급한 대로 svn+ssh를 사용하여 다시 연결합니다.

그러지 마세요. 잠재적으로 덜 안전한 응용 프로그램에서 로그인 암호를 사용하지 마십시오. Brent가 말한 것처럼 ssh 키를 사용하십시오.

Apache를 완전히 피하고 svn+ssh 프로토콜을 사용하십시오.