Ubuntu Server에 암호화 된 svn 암호를 저장하는 가장 좋은 방법은 무엇입니까?


8

훌로,

우분투 서버가 Subversion 서버를 실행하고 있습니다. SSH를 통해 동일한 컴퓨터에서 클라이언트를 실행하고 있으며 svn 클라이언트가 암호를 기억하고 일반 텍스트로 저장하지 않기를 바랍니다. 여기를 보면 gnome-keyring과 kwallet의 두 가지 방법이 있습니다. 데스크톱 관리자를 사용하지 않기 때문에 데스크톱 관리자 중 하나를 사용하는 것에 대해 약간 조심합니다. 어떤 제안? 내가 언급 한 두 가지 앱 중 하나를 사용하는 것이 좋을까요?

티아

답변:


9
  1. 원격 시스템에서 Gnome-keyring 또는 Kwallet을 실행할 수 있습니다. 각각은 데몬과 GUI의 두 가지 구성 요소로 제공됩니다.

    • X 전달로 ssh를 실행하면 원격 시스템에서 GUI 응용 프로그램을 실행할 수 있습니다. "서버"시스템이라고해서 GUI 응용 프로그램을 설치할 수 없다는 의미는 아닙니다. 해당 데스크톱 환경을 실행하는지 여부에 관계없이 응용 프로그램을 실행하기 위해 특정 데스크톱 환경이 필요하지 않습니다.

    • 명령 행에서 Kwallet을 제어 할 수 qdbus있지만 명령 행 에서 비밀번호를 일반 텍스트로 작성해야하므로 다른 사용자가 스누핑 할 수 있기 때문에이 특정 경우에는 좋지 않습니다. 이 SU 답변 도 참조하십시오 .

    • Gnome-keyring과 Kwallet (패키지 python-keyring-gnomepython-keyring-kwallet) 모두에 대한 파이썬 바인딩이 있습니다 . 작은 파이썬 스크립트를 작성하여 제어 할 수 있습니다. 실제로 그놈 키링에는 이미 gkeyring이 있습니다.

    • 키링 비밀번호가 로그인 비밀번호와 동일한 경우 로그인 할 수 있으며 로그인 libpam-keyring할 때 키링이 자동으로 잠금 해제됩니다. 그러나이를 위해서는 키 쌍이 아닌 비밀번호로 로그인해야합니다.

  2. Gnome-keyring 또는 Kwallet을 로컬에서 실행중인 경우 약간의 작업으로 ssh를 통해 전달할 수 있습니다. 그들은 ssh가 전달할 수없는 유닉스 소켓을 사용합니다. 그러나 socatUnix 소켓을 TCP 소켓에 로컬로 릴레이하거나 다른 방법으로 원격 시스템에서 릴레이 할 수 있습니다 .

    while true; do socat TCP-LISTEN:22007 UNIX-CONNECT:"$GNOME_KEYRING_SOCKET"; done &
    ssh -R22007:localhost:22007 remote.example.com
    export GNOME_KEYRING_SOCKET="$HOME/.gnome-keyring-socket"
    while true; do socat UNIX-LISTEN:"$GNOME_KEYRING_SOCKET" TCP4:localhost:22007; done &
    

    각 측면에 작은 쉘 스크립트를 사용하여 RemoteForward라인을 자동화하여 자동화 할 수 있습니다 ~/.ssh/config. 이론적으로 원격 시스템에서 그놈 키링에 액세스 할 수 있어야합니다. 그러나 나는 해마로 액세스하려고 시도했지만 연결하려고 시도조차하지 않았습니다 $GNOME_KEYRING_SOCKET. 이유를 모르겠으며 svn이 키 링에 액세스 할 수 있는지 알 수 없습니다.

  3. 암호화 된 파일 시스템에 svn 암호를 저장할 수 있습니다. 몇 가지 옵션이 있습니다 . 가장 간단한 방법은 encfs입니다. 초기 설정 :

    sudo aptitude install encfs
    encfs ~/.passwords.encrypted ~/.passwords
    mv ~/.subversion/auth ~/.passwords/svn-auth
    ln -s ../.passwords/svn-auth ~/.subversion/auth
    

    일반적인 작업 과정 :

    encfs ~/.passwords.encrypted ~/.passwords
    ... work ...
    fusermount -u ~/.passwords
    

    이 방법은 여러 가지 이유로 선호합니다.

    • 초기 설정과 일반 워크 플로는 매우 간단합니다.
    • 로그인 위치는 중요하지 않습니다. 특히 로컬 X 서버가 필요 없으며 ssh를 통한 X 전달을 사용하지 않아도됩니다.
    • 암호화 된 파일 시스템은 키링보다 다재다능합니다 (키링 사용에는 덜 편리하지만 svn 경우에는 중요하지 않습니다).
    • 유비쿼터스가 아닌 유일한 도구는 encfs (FUSE 필요)이며 Ubuntu 용으로 패키지되어 있습니다.

대답에서 기대했던 것 이상으로 감사합니다! 3 번째 접근을 시도하고 다시보고하겠습니다.
Andy

매우 완전한 답변.
this.josh

~ / .subversion / auth가 비어 있거나 존재하지 않으면 하위 버전을 구제 할 수 있습니까? 그렇지 않으면 encfs를 먼저 실행하는 것을 잊어 버린 경우 세 번째 접근 방식은 약간 위험합니다.
unhammer

@unhammer이 방법을 사용하면 encfs 파일 시스템이 마운트되지 않으면 ~/.subversion/auth매달려있는 심볼릭 링크가됩니다. 이 경우 subversion은 암호를 저장한다고 알려주지 만 (알림을 해제하지 않은 경우) 실제로는 아무 곳에도 저장하지 않습니다 (svn 1.6.6으로 테스트). 따라서 세 번째 접근 방식에는 위험이 없습니다.
Gilles 'SO- 악마 중지'

아하, 내가 먼저 심볼릭 링크없이했지만, 지금은 :-)까지 그 삭제에 대한 감사, 암호화 된 폴더 작업을 수행 내부 폴더에 심볼릭 링크를 참조
unhammer

0

gpg는 암호를 가진 파일을 암호화하지만, 암호를 입력해야합니다 (개인 키를 잃어 버리지 마십시오!).

나는 당신이 개인 키를 svn에 체크인 할 수있을뿐만 아니라 그것을 사용하기 위해 여전히 암호 구가 필요할 것이라고 생각하지만,이 전체 설정은 조금 이상해 보입니다.

왜 이렇게해야합니까?


암호화하는 일반적인 방법은 아니지만 SVN과 잘 연결되는 방법을 찾고 있습니다. Ubuntu dekstop에서 SVN을 사용했을 때 문제가 없었으므로 그놈 키 링을 사용하고 있다고 가정합니다. 나는 그놈 키링이 Ubuntu 서버에 설치되어 있지 않다고 다시 가정합니다. 그래서 문제가 있습니다. 현재 체크인 할 수 있지만 암호를 암호화되지 않은 상태로만 저장할 수 있다는 경고가 표시됩니다. 자세한 내용은 내가 제공 한 링크를 참조하십시오. 감사.
Andy

위의 설명을 명확하게 설명했습니다.
Andy

나는 것 사랑 SVN에 대한 표준 netrc 형식과 사용 ~ / .authinfo.gpg에, 그리고 암호화를 처리 GPG 가지고 있지만, 그것은 encfs 솔루션보다 조금 더 설정이 필요 것 같은 불행하게도 그것은 보인다. svn이 임의의 사용자 정의 암호 저장소를 허용하는 것처럼 보이지 않습니다.
unhammer
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.