Fundamentos do SSH

08-09-2012 18:15

Hoje gostaria de vos falar um pouco do protocolo de rede SSH (Secure Shell) que nos permite comunicar em segurança entre hosts e utiliza por defeito o protocolo TCP no porto 22.

 

O SSH é disponibilizado por defeito em quase todos os sistemas operativos baseados em Unix, Linux, Solaris, BSD, OSX, FreeBSD, Debian e até mesmo em plataformas Windows apesar de não fazer parte da distribuição neste ultimo caso.

 

Para que serve o SSH?

O SSH serve para executar varias tarefas em segurança que não eram possiveis com outros protocolos como o telnet, rlogin e o rsh.

Com ele é nos possivel administrar com segurança a partir de uma consola de texto todas as tarefas administrativas de um sistema. 

 

O SSH poderá ser disponibilizado como servidor ou como cliente, vejamos as diferenças:

  • SSH daemon (Este serviço executado como servidor fica disponivel no porto TCP 22 e espera de ligações remotas ou mesmo locais)
  • SSH cliente (Serve para efectuar as ligações entre cliente/servidor)

 

O SSH suporta varios tipos de autenticação/Segurança:

  1. Autenticação com chaves publicas.
  2. Validação de user e password.
  3. Autenticação do servidor com validação de Host.

 

Uso basico do SSH:

 

ligação simples não especificando utilizador:

 

ssh nome_do_servidor_ssh

 

Especificando o utilizador:

 

ssh -l utilizador@nome_do_servidor_ssh

 

Especificando um porto diferente do standard na ligação remota ssh:

 

ssh -p numero_do_porto utilizador@nome_do_servidor_ssh

 

Executando comandos remotamente com o SSH:

 

ssh utilizador@nome_do_servidor_ssh "comando a ser executado remotamente"

 

 

Autênticação com chaves publicas (Public key Authentication):

 

Este tipo de autenticação requer o uso de uma chave publica para  a autenticação em conjunto com uma chave privada.

 

Como gerar um par de chaves privada e publica?

 

O processo é simples e  só requer alguns passos:

Deveras ter os dados de acesso (utilizador e password) do servidor ssh.

Deveras executar na homedir desse utilizador o seguinte comando:

 

ssh-keygen -t rsa

 

Com este comando irá ser gerado um par de chaves, uma publica e outra privada que vão ser usadas no processo de autenticação.

 

Output do comando:

Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
(It's safe to press enter here, as the /root/.ssh is the default and recommended directory to hold the RSA file.)

Enter passphrase (empty for no passphrase):
Enter same passphrase again:

(The password you enter here will need to be entered every time you use the RSA key but fortunately, you can set NO passphrase by pressing Enter. However, the upside is that you only have to remember this one passphrase for all the systems you access via RSA authentication and you can change the passhrase later with "ssh-keygen -p".)
 

Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.

 

Com este processo irão ser criadas duas chaves, uma privada e outra publica dentro da pasta .ssh na homedir do utilizador.

 

Colocar o valor da chave dentro do ficheiro authorized_keys, para o efeito faremos

 

cat id_rsa.pub >> .ssh/authorized_keys

 

Garantir que permissões ficam consistentes na directoria .ssh e no ficheiro authorized_keys:

 

chmod 700 ~/.ssh

chmod 600 ~/.ssh/authorized_keys

 

 

Por fim só nos resta copiar a chave publica anteriormente gerada com o nome id_rsa.pub para o cliente de onde iremos aceder e especificar a mesma na ligação.

 

Simples não é?

 

 

 

 

 

 

Procurar na página

Contacto