Tomar nota de la información relacionada con cygwin-emacs en el wiki: http://www.emacswiki.org/emacs/TrampMode
No consumo EmacsW32, pero yo no utilizar con éxito TRAMP a través de ssh con Cygwin y NT Emacs.
Nunca conseguí que TRAMP funcionara sin un agente ssh (es decir, solicitando credenciales), como has notado, simplemente se cuelga, pero funciona bien con uno, así que no perdí tiempo tratando de resolverlo. Asumiendo que también está feliz de utilizar un agente (y ya ha generado las llaves y los archivos según sea necesario authorized_keys añadido), el método que funciona para mí es:
- Ejecutar ssh-agente de cygwin.
- Ejecute NT Emacs a través de cygwin (para que herede las variables de entorno ssh-agent).
- Use 'sshx' como el método TRAMP (puede especificarlo manualmente en cada ruta de archivo, pero le recomiendo que sea el predeterminado, con
(setq tramp-default-method "sshx")
).
Esos puntos están todos cubiertos en el Wiki, pero también se pueden automatizar las cosas un poco:
Para el paso 1, perfil fiesta se inicia automáticamente un agente ssh si uno no se está ejecutando, o me lleva para mi contraseña si mi identidad ha expirado. (. Ver código de abajo)
Para el paso 2, el objetivo de mi acceso directo de Windows para emacs lanzamiento se ve así:
C:\cygwin\bin\bash.exe --login -c "env HOME=\"`cygpath '%APPDATA%'`\" /cygdrive/c/emacs/emacs-23.1/bin/runemacs.exe"
El argumento --login
significa que se ejecuta perfil fiesta, que asegura que el paso 1 siempre se ha tenido en cuenta antes de que se inicie emacs.
(Configuración HOME
no es necesario para vagabundo, pero %APPDATA%
es el valor predeterminado en NT Emacs, y esto impide que el directorio inicial de Cygwin que pueda prevalecer, por lo tanto, mantener sus emacs config coherente, independientemente de si utiliza este método abreviado para ejecutarlo .)
Finalmente, aquí está el código de mi cygwin .bash_profile que administra mi ssh-agent. Es un poco hacky, pero funciona para mí.
Tenga en cuenta que caduco mi identidad después de 4 horas (14400 segundos). TRAMP puede colgarse después de que eso suceda (como se mencionó anteriormente, nunca lo obtuve para solicitar credenciales), así que tenga en cuenta este problema. Escriba C-g
para evitar que intente conectarse. Para reanudar la conectividad, generalmente puede iniciar otro shell cygwin, volver a ingresar su frase de contraseña, y luego TRAMP estará contento de nuevo. Ocasionalmente no ha respondido, pero matar el * buffer * vagabundo lo resolverá.No caducar su identidad debe eludir este problema, por supuesto, debería ser aceptable.
SSH_ENV="${HOME}/.ssh/environment"
# Run ssh-agent, if one is not already running
function start_agent {
echo "Initialising new SSH agent..."
/usr/bin/ssh-agent -t 14400 | sed 's/^echo/#echo/' > "${SSH_ENV}"
echo succeeded
chmod 600 "${SSH_ENV}"
. "${SSH_ENV}" >/dev/null
/usr/bin/ssh-add;
}
# Source SSH settings, if applicable
if [ -f "${SSH_ENV}" ]; then
. "${SSH_ENV}" >/dev/null
#ps ${SSH_AGENT_PID} doesn't work under cywgin
ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ >/dev/null || {
start_agent;
}
#if our ssh-added identity has expired (see -t option to ssh-agent)
#then we need to re-add it
if ! /usr/bin/ssh-add -l >/dev/null; then
/usr/bin/ssh-add;
fi
else
#no ssh-agent running at the moment
start_agent;
fi
han intentado 'c: \ cygwin' con la barra inclinada hacia otro lado? – Mica