Configuración SSH: anular el nombre de usuario predeterminado

271

¿Es posible configurar sshpara saber cuál debería ser mi nombre de usuario?

Por defecto usa el nombre de usuario actual, que no es correcto en mi caso.

Estoy en una computadora portátil prestada y mi nombre de usuario es loaner, pero quiero decir sshque mi nombre de usuario es buck.

Puntos extra: mi nombre de usuario en casa es bgolemon. Si pudiera configurar el nombre de usuario por host, eso sería aún mejor.

bukzor
fuente
3
Stack Overflow es un sitio para preguntas de programación y desarrollo. Esta pregunta parece estar fuera de tema porque no se trata de programación o desarrollo. Consulte los temas sobre los que puedo preguntar aquí en el Centro de ayuda. Quizás Super User o Unix & Linux Stack Exchange sería un mejor lugar para preguntar. Consulte también ¿Dónde publico preguntas sobre Dev Ops?
jww
3
Esta es una buena pregunta!
Nicolas S.Xu
la respuesta aceptada aquí es de mejor calidad que la de los superusuarios: incluye el uso de la directiva del usuario global (predeterminado) y los comentarios agregados aclaran las prioridades de la directiva
Rondo

Respuestas:

449

Crea un archivo llamado configdentro ~/.ssh. Dentro del archivo puede agregar:

Host *
    User buck

O agregar

Host example
    HostName example.net
    User buck

El segundo ejemplo establecerá un nombre de usuario y es específico del nombre de host, mientras que el primer ejemplo establece solo un nombre de usuario. Y cuando usa el segundo, no necesita usarlo ssh example.net; ssh exampleserá suficiente.

Learath2
fuente
134
Probablemente valga la pena señalar eso de acuerdo con man ssh_config: Since the first obtained value for each parameter is used, more host-specific declarations should be given near the beginning of the file, and general defaults at the end.Entonces, la Host *sección probablemente debería ir al final.
quodlibetor
9
Vale la pena señalar que el archivo de configuración se procesará de arriba a abajo, rellenando cada campo (Usuario, Nombre de host ...) y omitiendo campos repetidos si se coinciden varias directivas de Host. Si se define Host *, User jdoeen la parte superior, y luego definir Host example, HostName abc.example.com, User root, intentando ssh exampleserá el mismo que si se ha introducido ssh [email protected]. Para definir los valores predeterminados de ssh (es decir User root), la Host *directiva debe estar en la parte inferior del archivo de configuración.
Sr.b
17
Además, no olvides chmod 600 en .ssh / config
Sven
Tenga en cuenta que si hay varios nombres de host a los que puede acceder el servidor (o si desea el mismo nombre de usuario predeterminado para varios servidores), debe cambiar la primera línea Host server1.local example.net *.example.orgy simplemente deshacerse de ella HostName.
Lèse majesté
44

Si solo desea hacer ssh algunas veces, como en una computadora prestada o compartida, intente:

ssh buck@hostname

o

ssh -l buck hostname
gpojd
fuente
1
Gracias, pero ya estoy familiarizado con esto. Parece redundante especificar buck @ host cuando siempre es buck @ host. Estoy tratando de encontrar un método para representar esta información en un archivo de configuración.
bukzor
1
¿Has considerado algo tan simple como alias sshhostname = 'ssh buck @ hostname'?
gpojd
Sí tengo. La respuesta de Learath2 es exactamente lo que estaba buscando. Puedo verificar esto en mi repositorio de archivos de puntos y no preocuparme por eso nunca más.
bukzor
Tomé la raíz del alias porque me conecto a máquinas para diferentes clientes, donde mi nombre de usuario es diferente en cada entorno de cliente. Otro enfoque, supongo, sería tener diferentes entornos de shell locales para establecer la configuración ssh y relacionada para cada cliente. O una VM por cliente.
Nick Spacek
6

man ssh_config dice

Usuario

Especifica el usuario para iniciar sesión como. Esto puede ser útil cuando se usa un nombre de usuario diferente en máquinas diferentes. Esto ahorra la molestia de tener que recordar dar el nombre de usuario en la línea de comando.

nes1983
fuente
1
"Identidad" en este caso es equivalente al uso habitual de "contraseña". Estos son los datos que se autentica, pero no ayuda especifica que usted está tratando de autenticar como .
bukzor
Ups Hay una configuración de usuario allí también.
nes1983
0

Puedes usar un atajo. Cree un archivo .bashrc en su directorio de inicio. Allí, puede agregar lo siguiente:

alias sshb="ssh buck@host"

Para que el alias esté disponible en su terminal, puede cerrar y abrir su terminal, o ejecutar

source ~/.bashrc

Luego puedes conectarte simplemente escribiendo:

sshb
Frank Forte
fuente
1
Esto es excelente para un host específico, pero como sigo conectándome a un billón de servidores diferentes, esto es bastante inútil. Más bien configurar .ssh/configcon la configuración adecuada. Vine buscando el *cuidado salvaje (y aprendí que debería estar en la parte inferior).
mazunki
0

Hay una gema Ruby que hace interfaz con su ssharchivo de configuración que se llama sshez.

Todo lo que tienes que hacer es sshez <alias> [email protected] -p <port-number>, y luego puedes conectarte usando ssh <alias>. También es útil ya que puede enumerar sus alias usando sshez listy puede eliminarlos fácilmente usando sshez remove alias.

Oss
fuente