Muy bien, esto es raro. En primer lugar, esto es mintty ejecutándose en cygwin actualizado, con git extraído de setup.exe de cygwin. Estoy ejecutando zsh.
$ git clone https://<user>@<domain>/<repository>/ ~/src/project/dev
Initialized empty Git repository in /cygdrive/c/src/project/dev/.git/
Password: <actual password in plain text appears>
# Nothing happens...
^C
$ <password text that I just typed>
zsh: command not found: <same password text>
¿Que esta pasando aqui? ¿Es este un problema terminal, un problema de shell, un problema git o un problema cygwin?
Actualización: Sí, estoy ejecutando la versión de Cygwin git, no la versión de Windows:
$ which git
/usr/bin/git
$ git --version
git version 1.7.1
$ /cygdrive/c/Program\ Files\ \(x86\)/Git/bin/git.exe --version
git version 1.7.0.2.msysgit.0
^C
sugiere que los caracteres no están ' t enviado a stdin del proceso git. Pero no sé cuál podría ser el problema específico.Respuestas:
OK, creo que he encontrado una solución definitiva.
El problema es que, independientemente del terminal utilizado (puttycyg, mintty, cmd.exe), Git por defecto, en ausencia de alternativas mejor configuradas, intenta usar un "indicador de contraseña simple" (como puede leer en la descripción de
core.askpass
opción de configuración ).La solicitud de contraseña simple aparentemente solo funciona en UNIX real, pero no en Cygwin.
La solución es instalar un programa compatible con SSH_ASKPASS para Windows y configurar Git para usarlo.
Lo que hice fue:
git config --global core.askpass "C:/win_ssh_askpass.exe"
. Tenga en cuenta que el archivo EXE tiene guiones bajos en su nombre, no signos menos.https://<user>@<domain>/<repository>
). De lo contrario, Git solicitará el inicio de sesión antes de solicitar la contraseña, utilizando la misma utilidad askpass. Sin saberlo, puede ingresar su contraseña como inicio de sesión, que se enviará al servidor web y se registrará en su registro de acceso como texto sin formato.Ahora Git solicita la contraseña utilizando una elegante ventana GUI y funciona independientemente del terminal utilizado :)
fuente
Experimenté el mismo problema; sin embargo, en mi caso, estoy SSH'd en el servidor Cygwin, por lo que obviamente un Winpass GUI askpass no funcionará.
En cambio, escribí este script simple para hacer el askpass. Pensé que también podría usarse a partir de indicaciones regulares obteniendo el dispositivo tty,
/bin/tty.exe
pero eso no funcionó por una razón desconocida (siéntase libre de tty o busque otra solución para obtener el tty, tal vez me equivoqué de alguna manera )/bin/askpass.sh:
Asegúrese de que este script sea ejecutable y úselo como la configuración core.askpass de su git. Dado que este script se basa en la variable $ SSH_TTY, normalmente solo funcionará desde SSH. Sin embargo, puede establecer $ SSH_TTY en
.bashrc
o.bash_profile
si no está configurado; de esta manera debería funcionar incluso desde una consola. La siguiente línea en su script rc debería hacerlo:fuente
Las soluciones anteriores no me funcionan, pero encontré otra.
tienes que ejecutar el agente ssh
simplemente agregue a ~ / .bashrc y reinicie la consola
PS Chrome y Opera usan linebreak que no es compatible con bash, solo usa otro navegador para copiar y pegar
fuente
Es posible que tenga un metacarácter, como
&
en la URL. Esto haría que git se ejecute en segundo plano, y en un sistema Unix se detendría tan pronto como intentara leer desde stdin. A;
también terminaría el comando a medio camino a través de la línea, yCtrl-C
provocaría que el resto de la línea (un comando separado) se abortara.Es interesante que
git
inicialice el repositorio/cygdrive/c/src/project/dev/.git/
aunque le haya dicho que lo use~/src/project/dev
(a menos que tenga su directorio de inicio en un lugar extraño). Esto sugeriría que elgit
comando no está viendo el resto de la línea de comando, que es lo que sucedería si hubiera un extravío&
o;
en la URL.(He tenido este problema muchas veces con
wget
, aunque no congit
).Intente
git clone
con un repositorio diferente, o use un transporte diferente del mismo repositorio, para ver sigit
está mal en general o solo para este repositorio. También puede intentar poner comillas simples alrededor de la URL.fuente
~/src
es un enlace simbólico a/cygdrive/c/src
(C:\src
). No hay&
en la URL. Intentaré clonar un repositorio público de git, pero en general no tendrán una contraseña ...Eche un vistazo al siguiente problema: estoy bastante seguro de que ahora es solo una limitación de importancia e interoperabilidad con Windows.
Edición 56 - mintty
También he tenido problemas al ejecutar mysql y similares desde mintty, por lo tanto, la respuesta es que es un problema de emulación de terminal.
fuente
La pregunta ya fue respondida ... Solo me gustaría agregar cómo lo arreglé:
Comprobando Windows
Git Bash
, pude ver esegit
conjunto siguienteSSH_ASKPASS
Entonces, en Cygwin, agregué la misma variable a
.bashrc
o
Al hacer esto, git abre SSH_ASKPASS desde Git ... No tuve que instalar ningún SW adicional ni crear ningún script adicional.
Espero que esto pueda ayudar!
fuente
Hace años, recuerdo haber tenido algunos problemas con la autenticación CVS de Cygwin ... tenía que ver con si instaló Cygwin con las terminaciones de línea de estilo DOS o Unix (CRLF versus solo LF); Es una de las opciones en el cuadro de diálogo del instalador. Si eligió la incorrecta (creo que DOS fue la que funcionó), la contraseña terminaría destrozada o con un carácter espurio o algo así.
De todos modos, podría valer la pena probar la otra opción.
fuente
Tengo el mismo problema y, al contrario de este hilo , el problema ocurre con Cygwin GIT en todos los terminales posibles
puttycyg
,mintty
y el clásico Windowscmd.exe
.Todavía estoy buscando una solución adecuada, pero hay una solución alternativa, aunque es muy insegura, puede intentar colocar la contraseña en la URL del repositorio, por ejemplo:
¿La solución alternativa funciona para usted?
fuente
Si es un repositorio que usa con frecuencia, lo más fácil puede ser crear un archivo ~ / .netrc con
Obviamente, debe establecer permisos draconianos apropiados en el archivo.
fuente
Solo un refinamiento en el comentario # 2
Hay un cygwin ssh-ask-pass (no oficial) aquí
Simplemente descargue el archivo tar.bz2 y descomprímalo en su carpeta cygwin. Funciona sin instalar borland delphi runtime.
fuente