O protocolo SSH (Secure Socket Shell) é amplamente utilizado para estabelecer ligação a um servidor remoto ou a uma máquina ligada a uma rede. Permite a troca de ficheiros e a criação, modificação ou execução de scripts em máquinas remotas.
O SSH é geralmente instalado como padrão em distribuições Linux ou Windows.
Descrição do protocolo SSH
O protocolo SSH (Secure Shell) é um protocolo de comunicação criptográfico utilizado para estabelecer ligações seguras e confidenciais entre dois sistemas informáticos através de uma rede. O seu princípio baseia-se na utilização de métodos de cifragem assimétricos e simétricos para proteger os dados que passam entre sistemas. Os utilizadores são geralmente autenticados através de pares de chaves criptográficas, constituídos por uma chave pública e uma chave privada, que garantem a verificação segura da identidade do utilizador. A principal utilidade do SSH reside no seu papel na segurança do acesso remoto a servidores, na transferência de ficheiros seguros e na gestão de sistemas à distância, oferecendo uma proteção robusta contra potenciais ameaças, incluindo ataques man-in-the-middle e interceção de dados sensíveis.
Abrir uma sessão SSH
Para ligar a um dispositivo
ssh <host>@<serveur>
exemplo para um raspberry pi
ssh pi@192.168.1.2
Uma vez estabelecida a ligação, o monitor pedir-lhe-á a palavra-passe para aceder ao terminal remoto.
Se a sua máquina remota o permitir, a etiqueta -X pode ser usada para mostrar as janelas na sua máquina
ssh -X <host>@<serveur>
Copiar um ficheiro remoto utilizando o protocolo SSH
La commande à utiliser pour copier un fichier d’une machine distante à une autre est la commande scp
scp <source> <destination>
scp root@192.168.1.33:script.py C:\Users\ADMIN
Será pedida uma palavra-passe para validar a cópia.
Iniciar sessão com uma palavra-passe
No Linux, pode instalar e utilizar o SSH
sudo apt-get install sshpass
sshpass -p {password} ssh {user}@{ipaddress}
No Windows, o Putty pode tratar da gestão de palavras-passe
Instale o PuTTy e adicione a pasta executável à variável de ambiente Path (C:\Program Files\PuTTY)
putty -ssh "root@192.168.1.32" -pw root #pour ouvrir une connexion en directe
Para enviar encomendas em direto, utilizamos o plink
plink -ssh <username>@<host> -pw <password> <command>
Exemplo
plink -ssh root@192.168.1.32 -pw root uname -a
Usando Python para enviar comandos SSH
Utilizamos a biblioteca de subprocessos para executar comandos de terminal
import subprocess subprocess.Popen(f"ssh {user}@{host} {cmd}", shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate()
Enviando comandos SSH que requerem uma senha via Python
python3 -m pip install paramiko
ssh = paramiko.SSHClient() #ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) #if missing ssh.connect(server, username=username, password=password) ssh_stdin, ssh_stdout, ssh_stderr = ssh.exec_command("uname -a") print("connected via SSH") print(ssh_stdout.read().decode()) ssh.close()