SSH (Secure Shell) is een protocol waarmee we op een veilige manier toegang kunnen krijgen tot computers op afstand, vergelijkbaar met Telnet, maar dan met behulp van encryptiealgoritmen die de verbinding beveiligen. Dit is vooral belangrijk wanneer we toegang willen tot computers die een cruciale functie binnen een organisatie vervullen.
Over het algemeen moeten we om toegang te krijgen onze gebruikersnaam en het adres van de computer opgeven, zodat de SSH-server ons om het toegangswachtwoord vraagt:
ssh usuario@equiporemoto
Vanaf het moment dat de client de eerste verbinding tussen de externe computer en ons tot stand brengt, reist de informatie al veilig, waardoor iemand onze toegangsgegevens voor die computer niet kan verkrijgen, maar SSH is een zeer aanpasbaar protocol dat ons veel mogelijkheden biedt.
SCP
De eerste is om bestanden tussen de client en de externe computer uit te kunnen wisselen, zonder dat je een FTP- of NFS-server hoeft te koppelen, simpelweg door SCP (Secure CoPy) te gebruiken dat de meeste SSH-servers implementeren:
scp archivo.tar.gz usuario@equiporemoto:/home/usuario
scp usuario@equiporemoto:/var/log/messages messages.txt
SSH-tunneling
Deze functie is erg handig, omdat het ons in staat stelt informatie te verzenden en te ontvangen die niet noodzakelijkerwijs shell-opdrachten zijn tussen de client en de externe computer, bijvoorbeeld gewoon browsen. Als je niet raadt wat dit voor nut kan hebben, denk dan aan het volgende: je moet een pagina openen, maar de plaats waar je je bevindt heeft een firewall die precies die pagina blokkeert, daarom kunnen we 'tunnelen' met een afstandsbediening computer die de genoemde sloten niet heeft en door de pagina bladeren via onze SSH-sessie:
ssh -D 8888 usuario@equiporemoto
Eenmaal verbonden, 'luistert' onze SSH-client op poort 8888 als een proxyserver, zodat we onze browser kunnen configureren en al het verkeer via de SSH-sessie wordt verzonden
Een ander voorbeeld dat bij me opkomt, is wanneer we, vanwege een geografische beperking, geen toegang hebben tot een webservice van waaruit we zijn, bij het maken van de tunnel, die webservice het IP-adres van onze externe server als de bron detecteert, niet het IP-adres van onze client. Dit komt enigszins overeen met VPN's (Virtual Private Network)
Omgekeerde SSH
Als we om de een of andere reden toegang moeten krijgen tot een computer die zich achter een firewall bevindt en dit ons niet toestaat om SSH-verkeer ernaar om te leiden, kunnen we een 'reverse SSH' uitvoeren, zodanig dat die computer verbinding maakt met een andere SSH-server, waarmee we ook verbinding kunnen maken, om toegang te krijgen tot de apparatuur achter de firewall. Een voorbeeld dat in ons opkomt, is wanneer we een vriend willen helpen die geen idee heeft hoe hij een omleiding op zijn modem moet configureren, maar we op afstand toegang tot zijn computer nodig hebben:
Vriend -> Modem -> SSH-server <- Over ons
De te volgen stappen zijn relatief eenvoudig:
Amigo
ssh -R 9999:localhost:22 usuario@servidorssh
Over ons
ssh usuario@servidorssh
Eenmaal binnen de SSH-server kunnen we verbinding maken met het team van onze vriend via
ssh amigo@localhost -p 9999
Zoals je kunt zien, ligt alle magie in de parameter -R, die de tussenliggende server vertelt dat op poort 9999 de computer van onze vriend nu luistert als een server.
Dit zijn slechts enkele mogelijkheden die SSH ons biedt maar ik nodig je uit om bijvoorbeeld met nog meer te experimenteren; we kunnen onbeheerde scripts uitvoeren met RSA-sleutels, X-sessies (grafische modus) omleiden naar onze grafische omgeving, om er maar een paar te noemen.