En mi caso, quiero hacer un pago SVN:
svn co svn+ssh://10.106.191.164/home/svn/shproject
Sin embargo, quiero tener la contraseña en esa línea, para que no aparezca.
En mi caso, quiero hacer un pago SVN:
svn co svn+ssh://10.106.191.164/home/svn/shproject
Sin embargo, quiero tener la contraseña en esa línea, para que no aparezca.
Respuestas:
svn co svn + ssh: // nombre de usuario: contraseña@10.106.191.164/home/svn/shproject
sshpass
(que funciona para mí).
Dado que está utilizando SSH, la forma preferida es utilizar una clave pública para la autorización, lo que ahorra la necesidad de una contraseña por completo.
Puede encontrar una guía para crear e instalar las claves aquí .
Infinitamente mejor es generar un par de claves. Como usuario local:
$ ssh-keygen -t rsa
(aceptar todos los valores predeterminados)
Luego tome el contenido de .ssh / id_rsa.pub y agréguelo en el servidor remoto a .ssh / Authorizedkeys Asegúrese de que todo esté pegado en la misma línea. También asegúrese de que los permisos del directorio .ssh sean 600.
Entonces debería poder ssh sin que se le solicite una contraseña.
En lugar de usar una contraseña, es posible que desee echar un vistazo a un par de claves privada / pública y hacer que ssh lo use. La mayoría de las distribuciones de Linux vienen con comandos fáciles de usar para crear ese par. sin embargo, esto requeriría acceso al servidor (una vez) para depositar el archivo de clave pública en el archivo ~ / .ssh / Authorized_keys de su usuario.
Bueno, yo no quiero que introduzca una contraseña - No me gusta depender de la contraseña de seguridad guardado en alguna parte; sin embargo, quiero ingresarlo una vez por conjunto de comandos svn + ssh; y a menudo, solo quieres hacer una svn checkout
, y de todas formas tienes que ingresar toneladas de contraseñas. En ese caso, me gustaría escribir una contraseña solo una vez.
Entonces, solo las respuestas de @Boinst y @Marius fueron relevantes para mi caso de uso; desafortunadamente, no ayudaron, ya que no pude hacer que trabajaran. Me pregunto si los autores de la publicación probaron los comandos antes de publicarlos, ya que ahora no puedo imaginar cómo podrían funcionar: aquí hay una prueba que hice localmente en mi PC Ubuntu 10.04 (y rompo con Ctrl-C, cada vez que veo el solicitud de contraseña aparece):
$ 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
En lo que respecta --username/--password
a la svn
línea de comandos, eso no importa svn+ssh
, porque está ssh
preguntando, no svn
:
svn - Subversion ignorando las opciones "--password" y "--username"
El mensaje que está recibiendo no se parece a Subversion pidiéndole una contraseña, parece ssh pidiéndole una contraseña.
Además, como lo muestra el registro, ssh
no acepta " username:password@...
" en la URL, y tampoco lo hace svn
. svn
Es probable que se explique por qué es aceptable usar solo nombre de usuario en la URL en ~/.subversion/config
:
### (Si la URL incluye un nombre de usuario, el nombre de host se pasará
### al agente de túnel como @.)
Observe que no se dice nada al respecto <user>:<pass>@<hostname>
.
Ahora, gracias a la página Subversion sobre SVN + SSH en Debian , finalmente me di cuenta de que hay una SVN_SSH
variable de entorno utilizada ~/.subversion/config
para el túnel ssh (supongo); y eso finalmente abre la posibilidad de usar el programa sshpass
para manejar la contraseña de una manera unidireccional:
$ SSHPASS=$PASS SVN_SSH="sshpass -e ssh" svn co svn+ssh://myself@127.0.0.1/tmp/myrepo myrepo-wc
Checked out revision 0.
Bueno, al menos me alegro de haber encontrado finalmente una solución que funcione para mí. Espero que esto también ayude a alguien más,
¡salud!
También puede usar el nombre de usuario y la contraseña de los interruptores dados .
Consulte Autenticación de línea de comandos .
Creo que usar sshpass (en Linux) es la mejor manera de obtener esto.
Instalar sshpass
$ sudo apt-get install sshpass
Establecer la variable de entorno temporal
$ export SSHPASS=*yourpass*
Edite el archivo de configuración de svn
$ nano ~/.subversion/config
Finalmente comentar agregar sshpass -e
a la línea ssh, antes del ssh
comando
ssh = $SVN_SSH sshpass -e ssh -q -o ControlMaster=no