Como posso fornecer uma senha SSH para o SVN na linha de comando?

8

No meu caso, quero fazer uma verificação do SVN:

svn co svn+ssh://10.106.191.164/home/svn/shproject

No entanto, quero ter a senha nessa linha, para que ela não apareça.

    
por Alex 16.11.2009 / 07:44

8 respostas

12

svn co svn+ssh://username:[email protected]/home/svn/shproject

    
por 16.11.2009 / 07:51
16

Considerando que você está usando o SSH, a maneira preferida é usar uma chave pública para autorização, o que economiza a necessidade de uma senha completamente.

Um guia para criar e instalar as chaves pode ser encontrado aqui .

    
por 16.11.2009 / 07:58
7

Infinitamente melhor é gerar um par de chaves. Como seu usuário local:

$ ssh-keygen -t rsa

(aceite todos os padrões)

Depois pegue o conteúdo de .ssh / id_rsa.pub e adicione-o no servidor remoto para .ssh / authorized_keys Tenha certeza de que tudo está colado na mesma linha. Também tenha certeza de que as permissões do diretório .ssh são 600.

Então você deve ser capaz de ssh sem ser solicitado por uma senha.

    
por 16.11.2009 / 07:58
6

Em vez de usar uma senha, talvez você queira dar uma olhada em um par de chaves privada / pública e fazer com que o ssh use isso. a maioria das distribuições de linux vem com comandos fáceis de usar para criar esse par. isso, no entanto, exigiria acesso ao lado do servidor (uma vez) para depositar o arquivo de chave pública no arquivo ~ / .ssh / authorized_keys do usuário.

    
por 16.11.2009 / 07:58
3

Bem, eu faço quero digitar uma senha - não gosto de confiar que minha senha seja salva em algum lugar; no entanto, eu quero entrar uma vez por conjunto de comandos svn + ssh; e muitas vezes, você só quer fazer um svn checkout - e tem que digitar toneladas de senhas de qualquer maneira. É nesse caso que eu gostaria de digitar uma senha apenas uma vez.

Portanto, apenas as respostas de @Boinst e @ Marius eram relevantes para o meu caso de uso; infelizmente, eles não ajudaram, pois eu não conseguia que eles trabalhassem. Gostaria de saber se os próprios autores do post tentaram os comandos antes de publicá-los, agora eu não posso imaginar como eles poderiam funcionar - aqui está um teste que fiz localmente no meu Ubuntu 10.04 PC (e eu quebro com Ctrl-C, cada vez que vejo o prompt de senha aparecer):

$ svn --version | head -1
svn, version 1.6.6 (r40053)

$ cd /tmp
$ svnadmin create myrepo
$ read -p 'ssh [email protected]? ' PASS
ssh [email protected]? [type _PASSWORD_, press ENTER]

## trying first with https://superuser.com/a/71479/39752 
# (specify in URL user:pass separated by colon)

## plain ssh - asks for password anyway:

$ ssh myself:[email protected]
myself:[email protected]'s password: ^C

# svn - with just username, as expected:

$ svn co svn+ssh://[email protected]/tmp/myrepo myrepo-wc
[email protected]'s password: ^C
svn: Network connection closed unexpectedly

# svn - with password added to URL, asks for password anyway:

$ svn co svn+ssh://myself:[email protected]/tmp/myrepo myrepo-wc
myself:[email protected]'s password: ^C
svn: Network connection closed unexpectedly

# trying then with https://superuser.com/a/380426/39752, https://superuser.com/a/327822/39752
# (--non-interactive and --username/--password on command line)

# svn - asks for password anyway:

$ svn co svn+ssh://[email protected]/tmp/myrepo --non-interactive --trust-server-cert --username myself --password $PASS --no-auth-cache
[email protected]'s password: ^C
svn: Network connection closed unexpectedly

No que diz respeito à linha de comando --username/--password on svn - isso não importa com svn+ssh , porque é ssh perguntando, não svn :

svn - Subversion ignorando as opções "--password" e "--username" - Estouro de pilha

The prompt you're getting doesn't look like Subversion asking you for a password, it looks like ssh asking for a password.

Além disso, como mostra o log, ssh em si não aceita " username:password@... " no URL - e nem svn . Por que é aceitável usar apenas o nome de usuário no URL em svn , provavelmente é explicado em ~/.subversion/config :

### (If the URL includes a username, then the hostname will be
### passed to the tunnel agent as @.)

Aviso nada é dito sobre <user>:<pass>@<hostname> .

Agora, graças à página Subversion sobre o SVN + SSH no Debian , Finalmente percebi que há uma variável de ambiente SVN_SSH usada em ~/.subversion/config para o (eu acho) túnel ssh; e que finalmente abre a possibilidade de usar o programa sshpass para lidar com a senha de uma maneira maneira:

$ SSHPASS=$PASS SVN_SSH="sshpass -e ssh" svn co svn+ssh://[email protected]/tmp/myrepo myrepo-wc
Checked out revision 0.

Bem, pelo menos eu estou feliz por finalmente encontrar uma solução que funciona para mim - espero que isso ajude alguém, também,
Felicidades!

    
por 22.04.2013 / 10:42
2
svn co svn+ssh://10.106.191.164/home/svn/shproject --non-interactive --trust-server-cert --username <username> --password <password> --no-auth-cache
    
por 20.01.2012 / 03:07
1

Você também pode usar as opções dadas nome de usuário e senha .

Consulte Autenticação de linha de comando .

    
por 25.08.2011 / 08:36
1

Acho que usar o sshpass (no Linux) é a melhor maneira de conseguir isso.

Instale o sshpass

$ sudo apt-get install sshpass

Defina a variável de ambiente temporária

$ export SSHPASS=*yourpass*

Edite o arquivo de configuração svn

$ nano ~/.subversion/config

Por fim, comente a linha sshpass -e to ssh, antes do comando ssh

ssh = $SVN_SSH sshpass -e ssh -q -o ControlMaster=no
    
por 12.03.2016 / 13:05