svn co svn+ssh://username:[email protected]/home/svn/shproject
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.
svn co svn+ssh://username:[email protected]/home/svn/shproject
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 .
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.
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.
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!
svn co svn+ssh://10.106.191.164/home/svn/shproject --non-interactive --trust-server-cert --username <username> --password <password> --no-auth-cache
Você também pode usar as opções dadas nome de usuário e senha .
Consulte Autenticação de linha de comando .
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
Tags ssh authentication svn linux