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-gnome와 python-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.