No meu caso, quero fazer um check-out de 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.
No meu caso, quero fazer um check-out de 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.
Respostas:
svn co svn + ssh: // nome do usuário: password@10.106.191.164/home/svn/shproject
sshpass
(o que funciona para mim).
Como você está usando SSH, a maneira preferida é usar uma chave pública para autorização, o que evita completamente a necessidade de uma senha.
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)
Em seguida, pegue o conteúdo de .ssh / id_rsa.pub e adicione-o no servidor remoto a .ssh / allowed_keys Certifique-se de que tudo esteja colado na mesma linha. Também verifique se as permissões do diretório .ssh são 600.
Então você deve poder fazer o ssh sem ser solicitada uma senha.
Em vez de usar uma senha, convém dar uma olhada em um par de chaves pública / privada e usar o ssh. A maioria das distribuições Linux vem com comandos fáceis de usar para criar esse par. no entanto, isso exigiria acesso ao servidor (uma vez) para depositar o arquivo de chave pública no arquivo ~ / .ssh / allowed_keys do usuário.
Bem, eu não quiser digitar uma senha - Eu não gosto de depender da minha password ser salvo em algum lugar; no entanto, quero inseri-lo uma vez por conjunto de comandos svn + ssh; e muitas vezes, você só quer fazer uma svn checkout
- e precisa digitar toneladas de senhas de qualquer maneira. Nesse caso, eu gostaria de digitar uma senha apenas uma vez.
Portanto, apenas as respostas de @Boinst e @Marius foram relevantes para o meu caso de uso; infelizmente, eles não ajudaram, pois eu não consegui fazê-los funcionar. Gostaria de saber se os autores do post tentaram os comandos antes de publicá-los, como agora não consigo imaginar como eles poderiam funcionar - aqui está um teste que fiz localmente no meu PC Ubuntu 10.04 (e quebro o Ctrl-C, cada vez que vejo o solicitação de senha):
$ svn --version | head -1
svn, version 1.6.6 (r40053)
$ cd /tmp
$ svnadmin create myrepo
$ read -p 'ssh myself@127.0.0.1? ' PASS
ssh myself@127.0.0.1? [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:$PASS@127.0.0.1
myself:_PASSWORD_@127.0.0.1's password: ^C
# svn - with just username, as expected:
$ svn co svn+ssh://myself@127.0.0.1/tmp/myrepo myrepo-wc
myself@127.0.0.1's password: ^C
svn: Network connection closed unexpectedly
# svn - with password added to URL, asks for password anyway:
$ svn co svn+ssh://myself:$PASS@127.0.0.1/tmp/myrepo myrepo-wc
myself:_PASSWORD_@127.0.0.1'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://myself@127.0.0.1/tmp/myrepo --non-interactive --trust-server-cert --username myself --password $PASS --no-auth-cache
myself@127.0.0.1's password: ^C
svn: Network connection closed unexpectedly
No que diz respeito --username/--password
à svn
linha de comando - isso não importa svn+ssh
, porque está ssh
perguntando, não svn
:
svn - Subversion ignorando as opções "--password" e "--username" - Stack Overflow em Português
O prompt que você está recebendo não se parece com o Subversion solicitando uma senha, mas com o ssh solicitando uma senha.
Além disso, como o log mostra, ssh
ele " username:password@...
" não aceita o URL - e o mesmo não acontece svn
. Por que é aceitável usar apenas o nome de usuário na URL svn
, provavelmente está explicado em ~/.subversion/config
:
### (Se a URL incluir um nome de usuário, o nome do host será
### passado para o agente de encapsulamento como @.)
Observe que nada é dito sobre <user>:<pass>@<hostname>
.
Agora, graças à página Subversion sobre SVN + SSH no Debian , finalmente percebi que há uma SVN_SSH
variável de ambiente usada no ~/.subversion/config
túnel ssh (eu acho); e isso finalmente abre a possibilidade de usar o programa sshpass
para manipular a senha de uma maneira unidirecional:
$ SSHPASS=$PASS SVN_SSH="sshpass -e ssh" svn co svn+ssh://myself@127.0.0.1/tmp/myrepo myrepo-wc
Checked out revision 0.
Bem, pelo menos estou feliz por finalmente encontrar uma solução que funcione para mim - espero que isso ajude outra pessoa também,
Cheers!
Você também pode usar o nome de usuário e a senha dos switches fornecidos .
Consulte Autenticação de linha de comando .
Eu acho que usar sshpass (no Linux) é a melhor maneira de conseguir isso.
Instalar 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
Finalmente comente adicionar sshpass -e
à linha ssh, antes do ssh
comando
ssh = $SVN_SSH sshpass -e ssh -q -o ControlMaster=no