Cliente
Ingresar
Para ingresar a un servidor vía ssh
podemos ejecutar el siguiente comando
Por defecto, se intentara ingresar a traves del puerto 22
, si se desea especificar otro, debe usarse el flag -p
Si se tiene un archivo .pem
se debera hacer uso del flag -i
Clave publica
Dentro de nuestro equipo donde deseamos ingresar al servidor, vamos a crear una clave a traves del siguiente comando dentro del directorio ~/.ssh
Esto nos generara una clave en ~/.ssh/
con el nombre id_rsa.pub
el cual podremos copiar en nuestro servidor donde deseamos ingresar
Clave publica personalizada
Ademas de esta clave podemos crear una personalizada con otro nombre distinto a id_rsa.pub
, especificandolo al generarla:
_Recordar encontrarnos en el directorio ~/.ssh
ssh-keygen -t rsa
> Enter file in which to save the key (/root/.ssh/id_rsa): ~/.ssh/Office_Key
> Enter passphrase (empty for no passphrase):
> Enter same passphrase again:
> Your identification has been saved in Office_Key.
> Your public key has been saved in Office_Key.pub.
Para poder especificar el servidor donde deseamos ingresar con esta clave, debemos crear un archivo de configuracion dentro de ~/.ssh
nano ~/.ssh/config
Host ALIAS
HostName dominio.com
IdentityFile ~/.ssh/KEY_NAME
User root
# Ejemplo
# Si el alias es personalizado, el clone quedaria asi
# git@office:USER/repository.git
Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/Office_Key
IdentitiesOnly yes
# Port 22
Ejecutar comandos
Podemos ejecutar comandos en un servidor vía ssh de manera sencilla.
Tambien es posible ejecutar multiples comandos
Otro ejemplo para ingresar comandos es con ayuda del comando EOF
ssh user@host << EOF
comando1
comando2
EOF
# Ejemplo
ssh user@host << EOF
hostname
date
echo "Hola mundo!" > /tmp/archivo.txt
EOF
Flags
-1
, -2
, especifica la version del protocolo ssh
-4
, -6
, conectarnos a un host por IPv4 o IPv6
-C
, comprime toda la informacion obtenida de ssh, esto es funcional en conexiones lentas
-f
, ejecuta en segundo plano los comandos ingresados
-F
, especificar un archivo de configuracion, por defecto se considera ~/ssh/config
-g
, permite al host remoto conectarse a puertos locales
-J
, permite conectarnos a otro host remoto desde el host en que nos conectemos
ssh -J user@jump_host user@host_destination
ssh -J user@jump_host1,user@jump_host1:port user@host_destination
-v
, muestra un debug de la conexion ssh
-E
, guarda el debug de la conexion ssh en un archivo especifico