Almacenar direcciones permanentemente cuando se usa SSH

12

Tengo algunos servidores remotos a los que me conecto a través del terminal. Los servidores no tienen un dominio, solo una dirección IP que es difícil de recordar cuando obtuve algunos de ellos.

¿Hay alguna manera de almacenar permanentemente valores en la terminal, para que yo pueda hacer lo siguiente?

server1 = 111.222.111.222

Y escriba comandos como:

ssh root@server1

en lugar de:

ssh [email protected]
lo normal
fuente

Respuestas:

22

Para las conexiones SSH, puede crear un archivo de configuración de usuario ~/.ssh/configy colocar las asignaciones allí, por ejemplo

Host server1
  Hostname      111.222.111.222

Puede agregar fácilmente otros campos como Port(para puertos no estándar) y User(útil si su nombre de usuario en el sistema remoto difiere del del sistema local). Ver man ssh_configpara más detalles.

conductor de acero
fuente
14

Sí, solo escríbelos en el archivo /etc/hosts. Tiene la siguiente sintaxis:

1.2.3.4 servername additional_servername

Dónde:

  • 1.2.3.4 es la dirección IP
  • servername es el nombre
  • additional_servername es un nombre opcional

Después de guardar, puede llegar al servidor por su nombre.

caos
fuente
@theusual Si esta es la respuesta que recibió, considere aceptarla (marque debajo de los botones de voto arriba / abajo).
jpmc26
8

Por supuesto, para su problema particular, desea seguir los consejos de @chaos y @steeldriver, pero en el caso general, para "almacenar valores permanentemente en el terminal", está buscando variables de shell. Cómo configurarlos dependerá de su shell (supongo echo $SHELLque proporcionará la información relevante).

Si con "permanentemente" quieres decir "mientras no salga de esta sesión de terminal", entonces puedes simplemente usar el export server1=111.222.111.222comando si estás usando un bashshell basado en ( setenv server1 111.222.111.222para un csh/tcshshell basado, si no recuerdo mal). A continuación, puede acceder a la variable de prefijándolo con $ : ssh root@$server1.

Si por "permanentemente" te refieres a "cada vez que inicio un nuevo terminal", entonces necesitarás configurar tu variable en uno de los archivos de inicio de shell. Por ejemplo, en $HOME/.bashrcpor bashproyectiles basados, o $HOME/.cshrc- presumiblemente utilizando la misma sintaxis que lo mencionan en el párrafo anterior. Tenga en cuenta que deberá obtener el archivo init (p. Ej., source $HOME/.bashrcO abrir un nuevo shell para que se tengan en cuenta los cambios).

NB: la respuesta de la memoria puede requerir algunos pequeños ajustes.

Skippy le Grand Gourou
fuente
2
Por permanente, incluso si reinicia la computadora. Echaré un vistazo a esto, puede ser útil en algún momento.
habitual el
Entonces se aplica el segundo método (archivos de inicio de shell).
Skippy le Grand Gourou
1

No es una respuesta directa a la pregunta (el caos y el Steeldriver ya han proporcionado lo que creo que serían las mejores soluciones literales), pero si solo necesita enviar un mensaje a un usuario en la única dirección en la mayoría de los casos, entonces mire la edición el .bash_aliasesarchivo en su directorio de inicio debería ser útil, ya que puede crear un alias para todo el comando del terminal.

DTR
fuente
0

Las respuestas específicas son muy buenas.

Sin embargo, en general, si desea tener algunas cosas definidas / configuradas en un shell, simplemente escriba un script para hacerlo y luego ejecútelo con sourceo .cuando desee que esa configuración esté vigente.

Si es algo que desea todo el tiempo, puede obtenerlo en .profile (para shells de inicio de sesión) o en .bashrc para todos los shells (si usa bash).

Con un enfoque como este, puede tener múltiples scripts para configurar diferentes entornos de trabajo según sea necesario, siempre y cuando se asegure de que no se pisen entre sí si invoca uno de ellos después de invocar otro primero.

Joe
fuente