Qual é a melhor maneira de armazenar uma senha svn criptografada no Ubuntu Server?

8

Olá,

Eu tenho o Ubuntu Server rodando um servidor subversion. Estou executando o cliente na mesma máquina através do SSH, e gostaria que o cliente svn lembrasse minha senha, mas não a armazenasse como texto simples. Procurando aqui eu vejo dois métodos: gnome-keyring e kwallet . Como não estou usando um gerenciador de desktop, estou um pouco cauteloso em tentar usar um desses. Alguma sugestão? Estaria ok (ou até mesmo trabalhar) usar um dos dois aplicativos que mencionei?

TIA

    
por Andy 09.09.2010 / 16:23

2 respostas

8
  1. Você pode executar o keyring do Gnome ou o Kwallet na máquina remota. Cada um vem em dois componentes, um daemon e uma GUI.

    • Você pode executar o aplicativo da GUI na máquina remota se executar o ssh com o encaminhamento do X. Só porque é uma máquina "servidor" não significa que você não pode instalar aplicativos GUI nele. Não importa se você está executando o ambiente de área de trabalho correspondente ou não, os aplicativos não precisam de um ambiente de área de trabalho específico para serem executados.

    • Você pode controlar o Kwallet na linha de comando através de qdbus , embora não seja uma boa idéia neste caso específico, porque você teria que escrever sua senha em texto puro em uma linha de comando, e isso pode ser espionado por outros usuários. Veja também esta resposta SU .

    • Há uma ligação de python para o keyring do Gnome e o Kwallet (packages python-keyring-gnome e python-keyring-kwallet ); você poderia escrever um pequeno script python para controlá-los. Na verdade, já existe um para o keyring do Gnome: gkeyring .

    • Se a senha do seu chaveiro é igual à sua senha de login, você pode instalar o libpam-keyring e seu chaveiro será desbloqueado automaticamente quando você efetuar login. No entanto, isso requer login com uma senha em vez de um par de chaves .

  2. Se você estiver executando o Gnome-keyring ou o Kwallet localmente, poderá encaminhá-los por meio do ssh, com um pouco de trabalho. Eles usam soquetes Unix, que o ssh não pode encaminhar. Mas você pode usar socat relay os soquetes Unix para soquetes TCP localmente e o contrário na máquina remota:

    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 &
    

    Isso pode ser automatizado com pequenos scripts de shell em cada lado e uma linha RemoteForward em ~/.ssh/config . Teoricamente, você deve poder acessar o chaveiro gnome da máquina remota. No entanto, tentei acessá-lo com cavalos-marinhos e nem tentei me conectar a $GNOME_KEYRING_SOCKET ; Eu não sei porque, e eu não sei se o svn seria capaz de acessar o chaveiro.

  3. Você pode armazenar sua senha svn em um sistema de arquivos criptografado. Existem várias opções ; Acho que a maneira mais simples de começar é encfs . Configuração inicial:

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

    Fluxo de trabalho normal:

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

    Esse método tem minha preferência por vários motivos:

    • A configuração inicial e o fluxo de trabalho normal são muito simples.
    • Não importa de onde você faz login, em particular você não precisa ter um servidor X local e usar o X forwarding sobre ssh.
    • Um sistema de arquivos criptografado é mais versátil que um chaveiro (embora seja menos conveniente para uso de chaveiro, mas no caso do svn isso não importa).
    • A única ferramenta não onipresente de que você precisa é o encfs (que requer o FUSE) e é empacotada para o Ubuntu.
por 09.09.2010 / 21:45
0

gpg criptografa um arquivo com a senha, - mas você precisará de uma senha para isso (e não perca a chave privada!).

Eu acho que você poderia verificar o svn na chave privada, assim como você ainda precisará da senha para usá-la, mas essa configuração toda parece um pouco estranha.

por que você precisa fazer isso?

    
por 09.09.2010 / 16:27