Comunicación remota a través de SSH

De MediaWiki
Ir a la navegación Ir a la búsqueda
SSH-on-the-first-try.JPG

Introducción

SSh... vai cifrado!

A tarefa consiste en establecer a conexión remota a un servidor ssh público ou a unha máquina nosa, a través de liña de comandos ou ferramentas gráficas.

Qué ventaxas ten ssh? Qué inconvintes? Cómo funciona?

AMPLIACIÓN.
Podes sabeer máis lendo a FAQ de SSH.

Desde Windows

Desde Linux

Instalación:

sudo apt update
sudo apt install openssh-server

Comprobando o servizo:

sudo systemctl status ssh

Para arrancalo/paralo/reinicialo (cambiar pola opción axeitada en start/stop/restart:

sudo systemctl start/stop/restart ssh

Para que arranque despois dun reinicio:

sudo systemctl disable ssh

Para deshabilitar o servizo no arranque:

sudo systemctl enable ssh
SSH-User-Computer.JPG

Configuración do firewall:

sudo ufw allow ssh

Para conectar:

ssh username@ip_address

Se non coñecedes a ip do equipo:

ip a
Troubleshooting. Se non está permitindo conectar:
A) Revisa o firewall. En caso de dúbida, nun entorno pedagóxico podes deshabilitalo con
 sudo ufw disable
B) Revisa que hai conectividade facendo ping entre máquinas. Se non a hai, revisa a configuración de rede (en virtualbox, posiblemente tes que cambiar o modo de conexión de rede (adaptador ponte, rede nat, rede interna...)

Algunhas configuracións

En Ubuntu, o ficheiro de configuración sshd principal se atópase en /etc/ssh/sshd_config. É moi recomendable facer unha copia de seguridade da versión actual do ficheiro antes de editalo:

Para facer cambios na configuracion

sudo nano /etc/ssh/sshd_config. 
CONSELLO. Fai copia do ficheiro antes de facer cambios para sempre coñecer a configuración orixinal e poder reverter se algo vai mal
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.original
sudo chmod a-w /etc/ssh/sshd_config.original
Ou tamén:
sudo cp /etc/ssh/sshd_config{,.bak}


IMPORTANTE

Un cambio erróneo pode facer que perdas a conexión remota... por iso é aconsellable probar a configuración despois dos cambios e antes do reinicio con

sudo sshd -t -f /etc/ssh/sshd_config

Para coñecer as opcións de configuración:

man sshd_config

Cambiar porto por defecto

O porto por defecto é o 22

Port 22

Pode ser axeitado cambialo para non dar pistas a un posible atacante que faga un escaneo de portos.

De facer o cambio, para conectar por terminal será co parámetro -p:

ssh -p port_number remote_host

Cómo iniciar sesión en SSH con claves Si bien es útil poder iniciar sesión en un sistema remoto usando contraseñas, es mucho mejor configurar una autenticación basada en claves.

Cómo funciona a autenticación baseada en claves

Funciona mediante a creación dun par de claves: unha clave privada e unha clave pública:

  • A clave privada atópase no equipo cliente e protéxese e mantense en segrego
  • A clave pública pode entregarse a alguén ou colocarse en calquera servidor ai que desexe acceder.

Cando intente conectarse usando un par de claves, o servidor usará a clave pública para crear unha mensaxe para o equipo cliente que só pode leerse coa clave privada.

Despois o equipo cliente envía a resposta axeitada ao servidor e así o servidor saberá que o cliente é lexítimo.

O proceso completo realízase automáticamente despois de configurar as claves.

Cómo crear claves SSH

As claves SSH deben xenerarse no equipo desde o que se desexa iniciar sesión (Xeneralmente o noso equipo local)

SSH-key-joke.jpg

Pode facerse con este commando:

ssh-keygen -t rsa

Intro para aceptar os valores predeterminados. As túas claves crearanse en ~/.ssh/id_rsa.pub e ~/.ssh/id_rsa.

Cambia ao directorio .ssh escribindo:

cd ~/.ssh

Vemos os permisos dos ficheiros:

ls -l

-rw-r--r-- 1 demo demo  807 Sep  2 22:15 authorized_keys
-rw------- 1 demo demo 1679 Sep  2 23:13 id_rsa
-rw-r--r-- 1 demo demo  396 Sep  2 23:13 id_rsa.pub

So o propietario pode leer o ficheiro id_rsa e escribir nel (Así é como debería ser mantido en segredo).

Mais o ficheiro id_rsa.pub pode compartirse e ten permisos apropiados para que así sexa.

Cómo transferir su clave pública al servidor

Mentras temos acceso con ccontrasinal a un servidor, podemos copiar a súa clave pública nel mediante a emisión deste comando:

ssh-copy-id remote_host
Con isto iniciarase unha sesión SSH. Despois de ingresar o noso contrasinal, a nosa clave pública copiarase no ficheiro de claves autorizadas do servidor, o que permitirá iniciar sesión sin o contrasinal nas seguintes conexións.

Deshabilitar a autenticación mediante contrasinal

Se creou claves SSH, pode mellorar a seguridade do servidor deshabilitando a autenticación mediante contrasinal. Así, ademáis de por consola, a forma de iniciar sesión será mediante a clave privada que se emparella coa clave pública que se tivo instalado no servidor.

CUIDADO- Antes de continuar con este paso, asegúrese de tes instalada unha clave pública no servidor. De non ser así, non poderá ter acceso por SSH!

Como root ou usuario con privilexios sudo, abrimos o ficheiro de configuración sshd:

sudo nano /etc/ssh/sshd_config

Na liña que di Password Authentication eliminamos o # inicial (para descomentar) e cambiamos o seu valor a no:

PasswordAuthentication no

Deben quedar estes parametros así (xa o están de forma predeterminada): PubkeyAuthentication yes ChallengeResponseAuthentication no

Gardamos cambios, e reiniciamos o servizo:

sudo systemctl reload ssh

A autenticación mediante contrasinal estará deshabilitada e so debe poder accederse mediante a autenticación de claves SSH.

Outros parámentros

Non é recomendable permitir que root acceda por ssh

Estos parámetros especifican parte de la información de inicio de sesión.

LoginGraceTime
especifica cantos segundos manterase a conexión activa sen iniciar sesión (cando pide usuario e contrasinal).
PermitRootLogin
selecciona se permite que o usuario root inicie sesión (mellor desactivalo por cuestións de seguridade. Na maioría dos casos modificar a no cando se teña creado unha conta de usuario que teña acceso a maiores privilexios (a través de su ou sudo) e que poida iniciar sesión a través de ssh.
strictModes
é un protector de la seguridade que denegará un intento de inicio de sesión se calquera pode ler os ficheiros de autenticación (evita intentos de inicio de sesión cando os ficheiros de configuración non sexan seguro)s.
Reenvío X11
Estos parámetros configuran una capacidad llamada Reenvío X11. Esto le permite ver en el sistema local la interfaz gráfica de usuario (GUI) del sistema remoto.
X11Forwarding yes
X11DisplayOffset 10
Esta opción debe habilitarse no servidor e asignarse co cliente SSH durante a conexión coa opción -X.
INTERESANTE- Unha boa idea pode ser ter algunhas sesións activas cado realice cambios. Así poderás reverter a configuración de ser preciso.

Túneles SSH

Túneles directos

Túneles inversos

Copia de ficheiros con scp

Acceso mediante ferramentas con interfaz gráfica

Para comprobar o funcionamento

  • Podemos conectar dunha máquina virtual a outra (que estén na mesma rede ou sexan accesibles).
  • Desde a nosa máquina a unha máquina virtual (configurada a tarxeta coma adaptador ponte)
  • Ou podemos facer uso de servidores SSH públicos

Referencias