es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo hago que TRAMP use los nombres de usuario de mi configuración ssh con la canonicalización del nombre de host?

Creí que esta sería una pregunta extremadamente básica, pero al buscar en Google solo he encontrado una pregunta similar aquí [1], la cual no me ha sido de ayuda.

Tengo una configuración bastante extensa de ssh. ¿Cómo puedo hacer que TRAMP la respete? La mayoría de las cosas funcionan desde el principio, excepto el nombre de usuario, por el cual TRAMP me solicita cada vez que me conecto a un servidor. Me gustaría que TRAMP dejara de pedirme el usuario y usara la entrada “user” de mi configuración de ssh directamente. ¿Existe alguna configuración para ello?

Edit: TRAMP solo solicita el usuario cuando la configuración utiliza canonicidad. Es decir, la siguiente configuración de ssh funciona:

Host foo
HostName foo.example.com
User BettaGeorge

Sin embargo, la siguiente configuración de ssh en cambio me solicita el nombre de usuario:
“`
CanonicalDomains example.com
CanonicalizeHostname yes

Host *.example.com
User BettaGeorge
“`
La opción de establecer el nombre de usuario por host (sin comodines) no es viable ya que administro un gran clúster de máquinas virtuales ocasionalmente efímeras.

He confirmado que tramp-default-user-alist es nil cuando esto sucede.

Mi versión de Emacs es 27.2 en Linux, mi versión de TRAMP es 2.4.5.27.2.

[1] https://stackoverflow.com/questions/9901030/tramp-mode-in-emacs-using-ssh-config

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para configurar TRAMP para que respete su configuración ssh al conectarse a servidores remotos, debe establecer la variable “tramp-default-user-alist” en su archivo de inicialización de Emacs (por ejemplo, “.emacs” o “.emacs.d/init.el”).

    Suponiendo que tiene una entrada de Host en su configuración ssh que se ve así:

    Host foo
      HostName foo.example.com
      User BettaGeorge
    

    Puede agregar la siguiente línea a su archivo de inicialización de Emacs para hacer que TRAMP use el usuario “BettaGeorge” al conectarse a “foo.example.com”:

    (add-to-list 'tramp-default-user-alist' ("foo.example.com" "BettaGeorge"))
    

    Esto agregará una entrada a la lista “tramp-default-user-alist” que asocia el nombre de host “foo.example.com” con el nombre de usuario “BettaGeorge”. Puede agregar entradas similares para otros hosts en su configuración ssh.

    Si tiene una configuración ssh más compleja con entradas de Host comodín, puede usar expresiones regulares en el argumento de nombre de host de “add-to-list”. Por ejemplo, si tiene una entrada de Host como esta:

    Host *.example.com
      User BettaGeorge
    

    Puede agregar la siguiente línea a su archivo de inicialización de Emacs para hacer que TRAMP use el usuario “BettaGeorge” al conectarse a cualquier host que coincida con el patrón “*.example.com”:

    (add-to-list 'tramp-default-user-alist' ("\\`.*\\.example\\.com\\'" "BettaGeorge"))
    

    Esta línea utiliza una expresión regular (“\`.*\.example\.com\'”) para hacer coincidir los nombres de host que terminan con “.example.com” y los asocia con el nombre de usuario “BettaGeorge”.

Comments are closed.