
Praktische voorbeelden , die uw vaardigheden als remote systeembeheerder naar een nieuw niveau tillen. De commando's en tips helpen niet alleen bij het gebruik SSH, maar ook om efficiƫnter door het netwerk te navigeren.
Kennis van enkele tricks ssh is nuttig voor elke systeembeheerder, netwerkingenieur of beveiligingsspecialist.
Praktische voorbeelden van SSH
Eerst de basisprincipes
Uitleg van de SSH-opdrachtregel
In het volgende voorbeeld worden de gebruikelijke parameters gebruikt, die vaak voorkomen bij het verbinden met een externe server SSH.
localhost:~$ ssh -v -p 22 -C neo@remoteserver-v: de uitvoer van debuginformatie is bijzonder nuttig bij het analyseren van authenticatieproblemen. Het kan meerdere keren worden gebruikt om extra informatie weer te geven.- p 22: poort voor verbinding met de externe SSH-server. 22 hoeft niet vermeld te worden, omdat dit de standaardwaarde is, maar als het protocol op een andere poort staat, dan vermelden we dit met de parameter-p. De luisterpoort wordt vermeld in het bestandsshd_configin het formaatPort 2222.-C: compressie voor de verbinding. Als u een langzame verbinding heeft of veel tekst bekijkt, kan dit de verbinding versnellen.neo@: de string voor het @-symbool geeft de gebruikersnaam aan voor authenticatie op de externe server. Als dit niet wordt vermeld, wordt de gebruikersnaam van het account dat momenteel is ingelogd (zoals ~ $ whoami) standaard gebruikt. De gebruiker kan ook worden opgegeven met de parameter-l.remoteserver: de hostnaam waarmee verbinding wordt gemaaktssh, dit kan een volledig domeinnaam zijn, een IP-adres of een andere host in het lokale hosts-bestand. Voor verbinding met een host die zowel IPv4 als IPv6 ondersteunt, kan de parameter worden toegevoegd aan de opdrachtregel-4of-6voor correcte resolutie.
Alle bovenstaande parameters zijn optioneel, behalve remoteserver.
Het gebruik van een configuratiebestand
Hoewel velen bekend zijn met het bestand sshd_config, is er ook een configuratiebestand voor de client voor de opdracht ssh. De standaardwaarde ~/.ssh/config, maar deze kan worden gedefinieerd als een parameter voor de optie -F.
Host *
Port 2222
Host remoteserver
HostName remoteserver.thematrix.io
User neo
Port 2112
IdentityFile /home/test/.ssh/remoteserver.private_keyIn het bovenstaande voorbeeldconfiguratiebestand voor ssh zijn er twee hostrecords. De eerste geeft aan dat voor alle hosts de configuratieparameter Port 2222 geldt. De tweede geeft aan dat voor de host remoteserver een andere gebruikersnaam, poort, FQDN en IdentityFile moet worden gebruikt.
Het configuratiebestand kan veel tijd besparen bij het invoeren van karakters, waardoor automatisch geavanceerde configuratie kan worden toegepast bij het verbinden met specifieke hosts.
Bestanden kopiƫren via SSH met SCP
De SSH-client wordt geleverd met twee andere zeer handige tools voor het kopiƫren van bestanden via versleutelde ssh-verbinding. Hieronder een voorbeeld van het standaard gebruik van de scp- en sftp-commando's. Let op dat veel parameters voor ssh ook in deze commando's worden toegepast.
localhost:~$ scp mypic.png neo@remoteserver:/media/data/mypic_2.pngIn dit voorbeeld is het bestand mypic.png gekopieerd naar remoteserver kopiƫren naar de map /media/data en hernoemd naar mypic_2.png.
Vergeet het verschil in de poortparameter niet. Dit is waar veel mensen op tegenkomen bij het uitvoeren van scp via de opdrachtregel. Hier is de poortparameter -P, en niet -p, net als in de ssh-client! Je zult het vergeten, maar maak je geen zorgen, iedereen vergeet het.
Voor degenen die bekend zijn met de console ftp, zijn veel van de commando's vergelijkbaar in sftp. Je kunt push, put en ls, zoals je hart het wenst.
sftp neo@remoteserverPraktische voorbeelden
In veel van deze voorbeelden kan het resultaat op verschillende manieren worden bereikt. Zoals in al onze en voorbeelden, ligt de voorkeur bij praktische voorbeelden die eenvoudig hun werk doen.
1. SSH socks-proxy
De SSH Proxy-functie nummer 1 is om goede redenen. Deze is krachtiger dan veel mensen aannemen en geeft je toegang tot elk systeem waar de externe server toegang toe heeft, met bijna elke applicatie. De SSH-client kan verkeer tunnelen via een SOCKS-proxy met ƩƩn eenvoudige opdracht. Het is belangrijk te begrijpen dat het verkeer naar externe systemen afkomstig zal zijn van de externe server, zoals aangegeven in de logbestanden van de webserver.
localhost:~$ ssh -D 8888 user@remoteserver
localhost:~$ netstat -pan | grep 8888
tcp 0 0 127.0.0.1:8888 0.0.0.0:* LISTEN 23880/sshHier starten we een SOCKS-proxy op TCP-poort 8888, de tweede opdracht controleert of de poort actief is in luistermodus. 127.0.0.1 geeft aan dat de service alleen op localhost werkt. We kunnen een iets andere opdracht gebruiken om te luisteren op alle interfaces, inclusief ethernet of wifi, wat het mogelijk maakt voor andere applicaties (achtige browsers) in ons netwerk om verbinding te maken met de proxyservice via de SSH SOCKS-proxy.
localhost:~$ ssh -D 0.0.0.0:8888 user@remoteserverNu kunnen we de browser instellen om verbinding te maken met de SOCKS-proxy. In Firefox kies je Instellingen | Algemeen | Netwerkinstellingen. Voer het IP-adres en de poort in voor verbinding.

Let op de optie onderaan het formulier, zodat de DNS-verzoeken van de browser ook via de SOCKS-proxy gaan. Als je een proxyserver gebruikt voor het versleutelen van webverkeer in het lokale netwerk, wil je deze optie waarschijnlijk selecteren om te zorgen dat DNS-verzoeken door de SSH-verbinding worden getunneld.
SOCKS-proxy activeren in Chrome
Chrome starten met specifieke opdrachtregelparameters activeert de SOCKS-proxy en tunnelt de DNS-verzoeken vanuit de browser. Vertrouw, maar verifieer. Gebruik om te controleren of de DNS-verzoeken niet meer zichtbaar zijn.
localhost:~$ google-chrome --proxy-server="socks5://192.168.1.10:8888"Andere applicaties gebruiken met een proxy
Houd er rekening mee dat veel andere applicaties ook SOCKS-proxy's kunnen gebruiken. De webbrowser is simpelweg het meest populaire hiervan. Sommige applicaties hebben configuratie-instellingen voor het activeren van de proxyserver. Anderen hebben wat hulp nodig van een hulpprogramma. Bijvoorbeeld, maakt het mogelijk Microsoft RDP en anderen via SOCKS-proxy uit te voeren.
localhost:~$ proxychains rdesktop $RemoteWindowsServerDe configuratie-instellingen van de SOCKS-proxy worden vastgesteld in het configuratiebestand van proxychains.
Tip: gebruik je een externe desktop van Linux naar Windows? Probeer een client . Dit is een modernere implementatie dan
rdesktop, met veel soepelere interactie.
Het gebruik van SSH via een socks-proxy
Je zit in een cafĆ© of hotel ā en je moet een vrij onbetrouwbare WiFi gebruiken. Op je laptop starten we lokaal een ssh-proxy en stellen we een ssh-tunnel in naar ons thuisnetwerk op een lokale Raspberry Pi. Met een browser of andere applicaties die zijn ingesteld voor socks-proxy, kunnen we toegang krijgen tot alle netwerksdiensten in ons thuisnetwerk of het internet betreden via onze thuisverbinding. Alles tussen jouw laptop en de thuisserver (via Wi-Fi en internet naar huis) is versleuteld in de SSH-tunnel.
2. SSH-tunnel (poortdoorsturen)
In zijn eenvoudigste vorm opent een SSH-tunnel gewoon een poort in jouw lokale systeem die verbinding maakt met een andere poort aan de andere kant van de tunnel.
localhost:~$ ssh -L 9999:127.0.0.1:80 user@remoteserver Laten we de parameter -Londer de loep nemen. Dit kan worden gezien als de lokale zijde die luistert. Dus in het bovenstaande voorbeeld luistert poort 9999 aan de kant van localhost en wordt doorgestuurd via poort 80 naar remoteserver. Opmerking: 127.0.0.1 verwijst naar localhost op de externe server!
Laten we een stap verder gaan. In het volgende voorbeeld worden de luisterpoorten verbonden met andere knooppunten in het lokale netwerk.
localhost:~$ ssh -L 0.0.0.0:9999:127.0.0.1:80 user@remoteserverIn deze voorbeelden maken we verbinding met een poort op een webserver, maar het kan ook een proxyserver of een andere TCP-dienst zijn.
3. SSH-tunnel naar een externe host
We kunnen dezelfde parameters gebruiken om de tunnel van een externe server naar een andere dienst die op een derde systeem draait te verbinden.
localhost:~$ ssh -L 0.0.0.0:9999:10.10.10.10:80 user@remoteserverIn dit voorbeeld sturen we de tunnel door van remoteserver naar de webserver die draait op 10.10.10.10. Verkeer van remoteserver naar 10.10.10.10 zit al niet meer in de SSH-tunnel. De webserver op 10.10.10.10 beschouwt remoteserver als de bron van webverzoeken.
4. Omgekeerde SSH-tunnel
Hier stellen we een luisterpoort in op de externe server die terugverbinding maakt met de lokale poort op onze localhost (of een ander systeem).
localhost:~$ ssh -v -R 0.0.0.0:1999:127.0.0.1:902 192.168.1.100 user@remoteserverIn deze SSH-sessie wordt een verbinding tot stand gebracht van poort 1999 op remoteserver naar poort 902 op onze lokale client.
5. Omgekeerde proxy SSH
In dit geval stellen we een socks-proxy in op onze ssh-verbinding, maar de proxy luistert aan de andere kant van de server. Verbindingen met deze externe proxy verschijnen nu uit de tunnel als verkeer van onze localhost.
localhost:~$ ssh -v -R 0.0.0.0:1999 192.168.1.100 user@remoteserverProbleemoplossing bij externe SSH-tunnels
Als je problemen hebt met de werking van externe SSH-opties, controleer dan met netstat, welke andere interfaces zijn verbonden met de luisterpoort. Hoewel we in de voorbeelden 0.0.0.0 hebben opgegeven, maar als de waarde GatewayPorts in sshd_config is ingesteld op no, dan zal de listener alleen aan localhost (127.0.0.1) zijn gebonden.
Beveiligingswaarschuwing
Let op dat bij het openen van tunnels en socks-proxies interne netwerkbronnen toegankelijk kunnen zijn voor onbetrouwbare netwerken (zoals het internet!). Dit kan een ernstige beveiligingsdreiging zijn, zorg er dus voor dat je begrijpt waar de listener toegang toe heeft.
6. VPN-installatie via SSH
De algemene term onder specialisten in aanvalsmethoden (pentesters en dergelijke) is "een uitvalsbasis in het netwerk". Na het tot stand brengen van een verbinding in ƩƩn systeem wordt dit systeem een toegangspoort voor verdere toegang tot het netwerk. Een uitvalsbasis waarmee je verder kunt gaan.
Voor zo'n uitvalsbasis kunnen we SSH-proxy's gebruiken en proxychains, maar er zijn enkele beperkingen. Bijvoorbeeld, we kunnen niet direct met sockets werken, dus we kunnen geen poorten in het netwerk scannen via SYN.
Door deze geavanceerdere VPN-optie daalt de verbinding tot laag 3. Vervolgens kunnen we eenvoudig het verkeer door de tunnel leiden met behulp van standaard netwerkroutering.
De methode maakt gebruik van ssh, iptables, tun interfaces en routering.
Eerst moeten we deze parameters instellen in sshd_config. Aangezien we wijzigingen aanbrengen in zowel de interfaces van het externe als het cliƫntsysteem, hebben we rootrechten aan beide zijden.
PermitRootLogin yes
PermitTunnel yesLaten we vervolgens de ssh-verbinding tot stand brengen met de parameter die vraagt om het initialiseren van tun-apparaten.
localhost:~# ssh -v -w any root@remoteserver Nu zouden we een tun-apparaat moeten hebben bij het bekijken van interfaces (# ip a). De volgende stap voegt IP-adressen toe aan de tunnelinterfaces.
SSH-clientzijde:
localhost:~# ip addr add 10.10.10.2/32 peer 10.10.10.10 dev tun0
localhost:~# ip tun0 upSSH-serverzijde:
remoteserver:~# ip addr add 10.10.10.10/32 peer 10.10.10.2 dev tun0
remoteserver:~# ip tun0 up Nu hebben we een directe route naar het andere host (route -n en ping 10.10.10.10).
Je kunt elk subnet via de host aan de andere kant routeren.
localhost:~# route add -net 10.10.10.0 netmask 255.255.255.0 dev tun0 Aan de andere kant moet je ip_forward en iptables.
remoteserver:~# echo 1 > /proc/sys/net/ipv4/ip_forward
remoteserver:~# iptables -t nat -A POSTROUTING -s 10.10.10.2 -o enp7s0 -j MASQUERADEBoom! VPN via SSH-tunnel op netwerkniveau 3. Dit is al een overwinning.
Als er problemen zijn, gebruik en ping, om de oorzaak vast te stellen. Aangezien we op niveau 3 spelen, zullen onze icmp-pakketten door deze tunnel gaan.
7. SSH-sleutel kopiƫren (ssh-copy-id)
Er zijn verschillende manieren, maar deze opdracht bespaart tijd om bestanden niet handmatig te kopiƫren. Het kopieert gewoon ~/.ssh/id_rsa.pub (of de standaard sleutel) van jouw systeem naar ~/.ssh/authorized_keys op de externe server.
localhost:~$ ssh-copy-id user@remoteserver
8. Externe opdrachtuitvoering (niet-interactief)
De opdracht ssh kan met andere commando's worden verbonden voor een gebruiksvriendelijke interface. Voeg gewoon de opdracht die je op de externe host wilt uitvoeren als laatste parameter in aanhalingstekens toe.
localhost:~$ ssh remoteserver "cat /var/log/nginx/access.log" | grep badstuff.php In dit voorbeeld grep wordt uitgevoerd op het lokale systeem nadat het logbestand via de ssh-kanaal is gedownload. Als het bestand groot is, is het handiger om grep aan de andere kant uit te voeren, door beide commando's gewoon in dubbele aanhalingstekens te plaatsen.
Een ander voorbeeld dat dezelfde functie vervult als ssh-copy-id uit voorbeeld 7.
localhost:~$ cat ~/.ssh/id_rsa.pub | ssh remoteserver 'cat >> .ssh/authorized_keys'
9. Externe pakketafvang en bekijken in Wireshark
Ik heb een van onze . Gebruik het om extern pakketten af te vangen met de uitvoer direct in de GUI van de lokale Wireshark.
:~$ ssh root@remoteserver 'tcpdump -c 1000 -nn -w - not port 22' | wireshark -k -i -
10. Lokale map kopiƫren naar externe server via SSH
Een mooie truc die een map comprimeert met bzip2 (dit is de -j parameter in de opdracht tar), en vervolgens de stroom bzip2 aan de andere kant uitpakt, waardoor een duplicaat van de map op de externe server wordt aangemaakt.
localhost:~$ tar -cvj /datafolder | ssh remoteserver "tar -xj -C /datafolder"
11. Externe GUI-applicaties met SSH X11-doorschakeling
Als er 'X' op de cliënt en de externe server is geïnstalleerd, kun je een GUI-opdracht extern uitvoeren, met een venster op je lokale desktop. Deze functie bestaat al een tijd, maar is nog steeds zeer nuttig. Start een externe webbrowser of zelfs de console van VMWare Workstation, zoals ik in dit voorbeeld doe.
localhost:~$ ssh -X remoteserver vmware Een string is vereist X11Forwarding yes in het bestand sshd_config.
12. Bestanden op afstand kopiƫren met rsync en SSH
rsync is in veel gevallen handiger scp, als periodieke back-ups van een map, een groot aantal bestanden of zeer grote bestanden nodig zijn. Hier is er een functie voor herstel na overdracht mislukking en kopieert het alleen gewijzigde bestanden, wat verkeer en tijd bespaart.
In dit voorbeeld wordt compressie gebruikt gzip (-z) en archiveringsmodus (-a), waarmee recursief kopiƫren mogelijk is.
:~$ rsync -az /home/testuser/data remoteserver:backup/
13. SSH via het Tor-netwerk
Het anonieme Tor-netwerk kan SSH-verkeer tunnelen met het commando torsocks. Het volgende commando zal een ssh-proxy via Tor tunnelen.
localhost:~$ torsocks ssh myuntracableuser@remoteserverzal proxy-poort 9050 op localhost gebruiken. Zoals altijd bij het gebruik van Tor, moet u grondig controleren welk verkeer wordt getunneld en andere operationele beveiligingskwesties (opsec). Waar gaan uw DNS-verzoeken naartoe?
14. SSH naar een EC2-instantie
Voor verbinding met een EC2-instantie is een privƩsleutel vereist. Download deze (met .pem-uitbreiding) vanuit het Amazon EC2-dashboard en wijzig de permissies (chmod 400 my-ec2-ssh-key.pem). Bewaar de sleutel op een veilige plaats of plaats deze in uw map ~/.ssh/.
localhost:~$ ssh -i ~/.ssh/my-ec2-key.pem ubuntu@my-ec2-public Parameter -i geeft de ssh-client gewoon aan om deze sleutel te gebruiken. Het bestand ~/.ssh/config is perfect voor het automatisch configureren van het gebruik van de sleutel bij het verbinden met de ec2-host.
Host my-ec2-public
Hostname ec2???.compute-1.amazonaws.com
User ubuntu
IdentityFile ~/.ssh/my-ec2-key.pem
15. Tekstbestanden bewerken met VIM via ssh/scp
Voor alle liefhebbers van vim is dit advies een tijdsbesparing. Met behulp van vim worden bestanden met scp in ƩƩn commando bewerkt. Deze methode maakt eenvoudig een bestand lokaal aan in /tmp, en kopieert het dan terug zodra we het hebben opgeslagen vanuit vim.
localhost:~$ vim scp://user@remoteserver//etc/hosts Opmerking: het formaat verschilt enigszins van normaal scp. Na de host hebben we een dubbele //. Dit is een verwijzing naar het absolute pad. Een schuinstreep betekent een pad relatief ten opzichte van de thuismap gebruikers.
**waarschuwing** (netrw) kan methode niet bepalen (formaat: protocol://[user@]hostname[:port]/[path])Als u deze fout ziet, controleer dan het opdrachtformaat opnieuw. Dit betekent meestal een syntaxisfout.
16. Een externe SSH-mount als lokale map met SSHFS
Met behulp van sshfs ā client voor bestandssystemen ssh ā we kunnen een lokale map verbinden met een externe locatie met alle bestandsinteracties in een versleutelde sessie ssh.
localhost:~$ apt install sshfs Op Ubuntu en Debian installeren we het pakket sshfs, en we monteren de externe locatie eenvoudigweg aan ons systeem.
localhost:~$ sshfs user@remoteserver:/media/data ~/data/
17. SSH-multiplexing met behulp van ControlPath
Standaard, bij een bestaande verbinding naar een externe server met behulp van ssh een tweede verbinding met ssh of scp opent een nieuwe sessie met extra authenticatie. De optie ControlPath maakt het mogelijk om de bestaande sessie te gebruiken voor alle volgende verbindingen. Dit versnelt het proces aanzienlijk: het effect is merkbaar, zelfs in een lokaal netwerk, laat staan bij verbindingen met externe bronnen.
Host remoteserver
HostName remoteserver.example.org
ControlMaster auto
ControlPath ~/.ssh/control/%r@%h:%p
ControlPersist 10m ControlPath geeft de socket aan om bij nieuwe verbindingen te controleren of er een actieve sessie is ssh. De laatste optie betekent dat, zelfs na het uitloggen uit de console, de bestaande sessie 10 minuten open blijft, zodat je binnen deze tijd opnieuw kunt verbinden via de bestaande socket. Voor meer informatie zie de handleiding ssh_config man.
18. Streaming video over SSH met VLC en SFTP
Zelfs oude gebruikers ssh en vlc (Video Lan Client) weten niet altijd van deze handige optie, wanneer je echt video via het netwerk wilt bekijken. In de instellingen File | Open Network Stream van het programma vlc kun je de locatie invoeren als sftp://. Als een wachtwoord vereist is, verschijnt er een verzoek.
sftp://remoteserver//media/uploads/myvideo.mkv
19. Twee-factor-authenticatie
Dezelfde twee-factor-authenticatie als bij jouw bankrekening of Google-account is van toepassing op de SSH-service.
Natuurlijk, ssh heeft oorspronkelijk de functie van twee-factor-authenticatie, wat betekent dat er een wachtwoord en een SSH-sleutel worden gebruikt. Het voordeel van een hardware-token of de Google Authenticator-app is dat het meestal een ander fysiek apparaat is.
Zie onze 8-minuten handleiding over .
20. Host-jumps met ssh en -J
Als je door netwerksegmentatie door meerdere ssh-hosts moet springen om de uiteindelijke bestemmingsnetwerk te bereiken, bespaart de snelkoppeling -J je tijd.
localhost:~$ ssh -J host1,host2,host3 user@host4.internal Hier is het belangrijk te begrijpen dat dit niet hetzelfde is als de opdracht ssh host1, dan user@host1:~$ ssh host2 En zo verder. De parameter -J maakt slim gebruik van omleiding, zodat localhost een sessie met de volgende host in de keten opzet. In het bovenstaande voorbeeld wordt onze localhost geauthenticeerd op host4. Onze sleutels van localhost worden gebruikt en de sessie van localhost naar host4 is volledig versleuteld.
Voor deze mogelijkheid in ssh_config geef de configuratieoptie ProxyJump. Als u regelmatig door meerdere hosts moet springen, bespaart automatisering via de config veel tijd.
21. Blokkeren van SSH brute force-pogingen met iptables
Iedereen die een SSH-service heeft beheerd en de logs heeft bekeken, weet hoeveel brute force-pogingen er elk uur, elke dag plaatsvinden. Een snelle manier om de ruis in de logs te verminderen, is door SSH op een niet-standaard poort te verplaatsen. Breng wijzigingen aan in het bestand sshd_config met de configuratieparameter Port##.
Met iptables kan ook eenvoudig het aantal connectiepogingen naar de poort worden geblokkeerd zodra een bepaalde drempel is bereikt. Een eenvoudige manier om dit te doen, is door gebruik te maken van , aangezien het niet alleen SSH blokkeert, maar ook verschillende andere inbraakdetectiemaatregelen uitvoert op basis van de hostnaam (HIDS).
22. SSH Escape voor dynamische poortomleiding
En ons laatste voorbeeld ssh is bedoeld om poortomleidingen on-the-fly te veranderen binnen een bestaande sessie ssh. Stel je dit scenario voor. Je zit diep in het netwerk; misschien ben je door een dozijn hosts heen gesprongen en heb je een lokale poort op je werkstation nodig die is omgeleid naar Microsoft SMB van een oud Windows 2003-systeem (herinnert iemand zich ms08-67?).
Druk op enter, probeer vervolgens het commando in de console in te voeren ~C. Dit is een controle-sequentie in de sessie die het mogelijk maakt om wijzigingen aan te brengen in de bestaande verbinding.
localhost:~$ ~C
ssh> -h
Commands:
-L[bind_address:]port:host:hostport Vraag om lokale doorverwijzing
-R[bind_address:]port:host:hostport Vraag om externe doorverwijzing
-D[bind_address:]port Vraag om dynamische doorverwijzing
-KL[bind_address:]port Annuleer lokale doorverwijzing
-KR[bind_address:]port Annuleer externe doorverwijzing
-KD[bind_address:]port Annuleer dynamische doorverwijzing
ssh> -L 1445:remote-win2k3:445
Poort wordt doorgestuurd. Hier kun je zien dat we onze lokale poort 1445 hebben omgeleid naar de Windows 2003-host die we in het interne netwerk hebben gevonden. Start nu gewoon msfconsole, en je kunt verder gaan (ervan uitgaande dat je van plan bent deze host te gebruiken).
Afsluiting
Deze voorbeelden, tips en commando's ssh moet een uitgangspunt bieden; meer informatie over elk van de teams en mogelijkheden is beschikbaar op de referentiepagina's (man ssh, man ssh_config, Ik ben altijd gefascineerd geweest door de mogelijkheid om systemen te benaderen en commando's uit te voeren vanuit elke plek ter wereld. Terwijl ik mijn vaardigheden met tools zoals).
zal je effectiever worden in elk spel dat je speelt. ssh š„ Praktische tips, voorbeelden en SSH-tunnels | ProHoster
Bron: habr.com
