SSH-commando: de opties -l, -p en -i gebruiken en verbindingsfouten controleren
Het SSH-commando is het commando van de OpenSSH-client dat in de vorm ssh account@serveradres via een versleutelde verbinding verbinding maakt met een externe Linux-server en op de verbonden server commando's uitvoert. We voerden ssh uit van een AlmaLinux 9-server naar een Debian 12-server en controleerden op volgorde alles van de hostsleutelcontrole bij de eerste verbinding tot de opties -l, -p en -i, het uitvoeren van externe commando's en de debuguitvoer van -v. Daarbij bleek dat je met ssh -G vooraf en zonder verbinding kunt controleren hoe opties werkelijk worden toegepast.
De uitvoer hieronder is precies wat de twee servers lieten zien. Het serveradres en het account, de hostnaam, het sleutelpad en de sleutelvingerafdruk en de versienummers van OpenSSL en de kernel van de verbindende server zijn vervangen door voorbeeldwaarden. De verbindende AlmaLinux-server gebruikt het account root en de ontvangende Debian-server een gewoon account.
1️⃣ Basisgebruik van het SSH-commando
Om in te loggen op een externe server schrijf je na ssh de accountnaam en het serveradres, verbonden met @. Na het inloggen verandert de prompt in die van de verbonden server, en met exit verbreek je de verbinding en keer je terug naar de oorspronkelijke server.
ssh user@192.0.2.10Linux server2 6.1.0-53-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.187-1 (2026-09-07) x86_64
Last login: Wed Oct 28 20:27:41 2026 from 198.51.100.7
[user]:~$ whoami
user
[user]:~$ exit
exit
Connection to 192.0.2.10 closed.De Debian-server waarmee we verbonden, toonde bij het inloggen ook enkele regels servermelding (motd) en een mailmelding; alleen die regels zijn uit de uitvoer hierboven weggelaten.
Bij de eerste verbinding met een server toont ssh vóór het inloggen de vingerafdruk van de hostsleutel en vraagt of je wilt doorgaan. Na het invoeren van yes werd de hostsleutel opgeslagen in ~/.ssh/known_hosts en verscheen daarna het resultaat van whoami.
ssh user@192.0.2.10 whoamiThe authenticity of host '192.0.2.10 (192.0.2.10)' can't be established.
ED25519 key fingerprint is SHA256:9fT2kL0qX8vN4cR1yB6sW3mZ7aH5dE0uJ2pG8oK1iVc.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.0.2.10' (ED25519) to the list of known hosts.
userNadat de sleutel in known_hosts was opgeslagen, verscheen de vraag niet meer bij volgende verbindingen met dezelfde server. Wijkt de vingerafdruk af van de waarde die je van de serverbeheerder hebt gekregen, voer dan no in. Na het invoeren van no stopte ssh zonder verbinding te maken.
ssh user@192.0.2.10The authenticity of host '192.0.2.10 (192.0.2.10)' can't be established.
ED25519 key fingerprint is SHA256:9fT2kL0qX8vN4cR1yB6sW3mZ7aH5dE0uJ2pG8oK1iVc.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? no
Host key verification failed.Bij afsluiten met no werd geen known_hosts-bestand aangemaakt. Daarom verschijnt bij de volgende verbinding opnieuw dezelfde vraag.
2️⃣ Opties van het SSH-commando
Opties van ssh komen vóór het verbindingsdoel. Toen we alleen ssh uitvoerden, verscheen de lijst met beschikbare opties als gebruiksaanwijzing.
sshusage: ssh [-46AaCfGgKkMNnqsTtVvXxYy] [-B bind_interface] [-b bind_address]
[-c cipher_spec] [-D [bind_address:]port] [-E log_file]
[-e escape_char] [-F configfile] [-I pkcs11] [-i identity_file]
[-J destination] [-L address] [-l login_name] [-m mac_spec]
[-O ctl_cmd] [-o option] [-P tag] [-p port] [-R address]
[-S ctl_path] [-W host:port] [-w local_tun[:remote_tun]]
destination [command [argument ...]]
ssh [-Q query_option]Geef je een optie op die niet in de gebruiksaanwijzing staat, dan verschijnt de fout [unknown option] samen met dezelfde gebruiksaanwijzing.
-V toont de geïnstalleerde versie van de OpenSSH-client. Hieronder staat het resultaat van de verbindende AlmaLinux-server; op de ontvangende Debian 12-server verscheen OpenSSH_9.2p1.
ssh -VOpenSSH_9.9p1, OpenSSL 3.5.1 1 Jul 2025-G maakt geen verbinding met de server, maar combineert de opgegeven opties met de configuratiebestanden en toont de waarden die werkelijk worden toegepast. De volledige uitvoer telt 87 regels, dus kiezen we met grep alleen de regels die we nodig hebben.
ssh -G user@example.com | grep -E "^(user|hostname|port|identityfile|connecttimeout|stricthostkeychecking|serveraliveinterval) "user user
hostname example.com
port 22
stricthostkeychecking ask
serveraliveinterval 0
identityfile ~/.ssh/id_rsa
identityfile ~/.ssh/id_ecdsa
identityfile ~/.ssh/id_ecdsa_sk
identityfile ~/.ssh/id_ed25519
identityfile ~/.ssh/id_ed25519_sk
identityfile ~/.ssh/id_xmss
identityfile ~/.ssh/id_dsa
connecttimeout noneDe zeven identityfile-regels zijn de standaardsleutelbestanden die ssh op volgorde zoekt als -i niet is opgegeven. connecttimeout none betekent dat er geen aparte wachttijd voor de verbinding is ingesteld.
| Optie | Kopiëren | Uitleg |
|---|---|---|
| -lAccount | Geeft de accountnaam voor de verbinding op | |
| -pPoort | Geeft de poort voor de verbinding op (standaard 22) | |
| -iSleutelbestand | Geeft het bestand met de privésleutel op | |
| -v | Toont het verbindingsverloop als debug1-regels | |
| -C | Comprimeert de uitgewisselde gegevens | |
| -X | X11-forwarding (externe GUI-programma's) | |
| -T | Wijst geen pseudoterminal toe | |
| -t | Dwingt toewijzing van een pseudoterminal af | |
| -n | Leidt de standaardinvoer om naar /dev/null | |
| -q | Onderdrukt waarschuwingen en meldingen | |
| -ooptie=waarde | Stelt een optie uit het configuratiebestand alleen voor deze verbinding in | |
| -L | Lokale port forwarding | |
| -F | Geeft het configuratiebestand op | |
| -G | Toont de instellingen die gelden, zonder verbinding | |
| -V | Toont de versie van de OpenSSH-client |
| Optie | Kopiëren | Uitleg |
|---|---|---|
| -N | Houdt alleen de verbinding open, zonder extern commando | |
| -J | Maakt verbinding via een andere server |
3️⃣ De optie ssh -l en port forwarding met -L
-l is de optie die de accountnaam voor de verbinding opgeeft. ssh -l user 192.0.2.10 maakte verbinding met hetzelfde account als ssh user@192.0.2.10.
ssh -l user 192.0.2.10 whoamiuserControle met -G liet zien dat het met -l opgegeven account in het item user stond.
ssh -G -l admin example.com | grep -E "^(user|hostname|port) "user admin
hostname example.com
port 22Met -G hebben we ook gecontroleerd welke van de twee geldt als je -l en account@adres samen opgeeft. Onder OpenSSH 9.9p1 werd admin toegepast, het account dat met -l was opgegeven.
ssh -G -l admin user@example.com | grep -E "^(user|hostname) "user admin
hostname example.comDe hoofdletter -L heeft een vergelijkbare naam, maar is een optie voor lokale port forwarding die niets met het account te maken heeft. Ze leidt verbindingen die op een poort van je eigen server binnenkomen door de SSH-verbinding en verbindt ze met een adres en poort aan de kant van de externe server.
8080:localhost:80 betekent dat poort 8080 van je eigen server wordt verbonden met poort 80 van localhost, gezien vanaf de externe server. Controle met -G liet dezelfde waarde zien in het item localforward.
ssh -G -L 8080:localhost:80 user@example.com | grep -E "^(hostname|localforward) "hostname example.com
localforward 8080 [localhost]:80Wil je alleen een tunnel openhouden, voeg dan ook -N toe, dat de verbinding openhoudt zonder extern commando.
4️⃣ SSH-poort en sleutelbestand opgeven
Accepteert de SSH-server verbindingen op een andere poort dan 22, geef de poort dan op met -p. -i geeft een bestand met privésleutel op dat geen standaardnaam heeft.
ssh -G -p 2222 -i ./mykey user@example.com | grep -E "^(user|hostname|port|identityfile) "user user
hostname example.com
port 2222
identityfile ./mykeyMet -i verdwenen de zeven regels met standaardsleutelbestanden en bleef alleen het opgegeven bestand over.
Sleutelbestanden maak je met ssh-keygen. Gebruik je al een sleutel, geef dan met -f een nieuwe bestandsnaam op. Hieronder staat het resultaat van het aanmaken van een ed25519-sleutel met de nieuwe naam mykey.
ssh-keygen -t ed25519 -f ./mykey -N "" -C "user@example.com"Generating public/private ed25519 key pair.
Your identification has been saved in ./mykey
Your public key has been saved in ./mykey.pub
The key fingerprint is:
SHA256:XLbhLZHSNdMvUqhSIbzRNJi/zKKkNnWmy0mTeBoUfaY user@example.com
The key's randomart image is:
+--[ED25519 256]--+
| ..=+.+o |
| . =oo+.oo |
| . . +=B. . . |
| . =o=o=. . .|
| . E S++... . |
| . .o.+ +. |
| o+== . |
| +*oo |
| ...+. |
+----[SHA256]-----+mykey is de privésleutel en mykey.pub de publieke sleutel. Volgens de OpenSSH-handleiding hoort de publieke sleutel in ~/.ssh/authorized_keys op de server waarmee je verbindt. Dat kan met ssh-copy-id, zoals in [ssh-copy-id -i ./mykey.pub user@192.0.2.10].
Maak je vaak verbinding met dezelfde server, zet dan een alias in ~/.ssh/config en typ alleen nog ssh met de alias. De regel Host is de alias, en de regels daaronder zijn de waarden die gelden bij verbinden via die alias.
Host myserver
HostName 192.0.2.10
User user
Port 2222
IdentityFile ~/.ssh/mykeyToen we deze instellingen in een bestand ./config zetten en met -F inlazen, werden adres, account, poort en sleutelbestand allemaal via één alias toegepast.
ssh -F ./config -G myserver | grep -E "^(user|hostname|port|identityfile) "user user
hostname 192.0.2.10
port 2222
identityfile ~/.ssh/mykeyOpties op de opdrachtregel gaan vóór het configuratiebestand. Toen we bij dezelfde alias ook -p 22 opgaven, veranderde port in 22.
ssh -F ./config -G -p 22 myserver | grep -E "^(hostname|port) "hostname 192.0.2.10
port 22hostname bleef 192.0.2.10 uit het configuratiebestand, alleen port veranderde in de waarde op de opdrachtregel.
5️⃣ Externe commando's uitvoeren met SSH
Schrijf je na het verbindingsdoel een commando, dan voert ssh zonder inlogscherm alleen dat commando uit en verbreekt daarna de verbinding. Bij meerdere commando's of shelltekens zoals een puntkomma zet je het geheel tussen enkele aanhalingstekens.
ssh user@192.0.2.10 'whoami; hostname'user
server2De exitcode van het externe commando kwam ongewijzigd terug als exitcode van ssh. In scripts zie je aan deze waarde of het externe commando is geslaagd.
ssh user@192.0.2.10 'exit 3'; echo $?3Voer je op deze manier een commando uit, dan wordt geen pseudoterminal toegewezen. tty uitgevoerd met -T gaf [not a tty].
ssh -T user@192.0.2.10 ttynot a ttyDe ssh-handleiding beschrijft -t als de optie voor schermgebaseerde programma's op de externe server. Met -t verscheen /dev/pts/0, en aan het eind ook een melding dat de verbinding was gesloten.
ssh -t user@192.0.2.10 tty/dev/pts/0
Connection to 192.0.2.10 closed.Met -q erbij verscheen deze melding niet.
ssh -t -q user@192.0.2.10 tty/dev/pts/0-n leidt de standaardinvoer van ssh om naar /dev/null. Zonder -n gaf de externe cat de via de pipe doorgegeven hello ongewijzigd weer.
echo hello | ssh user@192.0.2.10 cathelloecho hello | ssh -n user@192.0.2.10 catMet -n bij hetzelfde commando kwam hello niet aan bij de externe cat en werd er niets weergegeven.
6️⃣ SSH-verbindingsfouten en debuggen met ssh -v
Lukt de verbinding niet, kijk dan eerst aan de foutmelding in welke fase het vastliep. Toen het serveradres niet werd gevonden, verscheen [Could not resolve hostname].
ssh user@nosuchhost.invalidssh: Could not resolve hostname nosuchhost.invalid: Name or service not knownKlopt het adres, maar antwoordt er niets op die poort, dan verschijnt [Connection timed out]. Met -o ConnectTimeout=5 eindigde de poging na 5 seconden met deze fout.
ssh -o ConnectTimeout=5 -p 2222 user@192.0.2.10ssh: connect to host 192.0.2.10 port 2222: Connection timed outToen we met -o BatchMode=yes verbonden met een server die niet in known_hosts stond, stopte ssh met [Host key verification failed.] zonder naar de hostsleutel te vragen. Om te voorkomen dat de eerste verbinding in een script bij de vraag blijft hangen, gebruik je StrictHostKeyChecking=accept-new.
ssh -o BatchMode=yes user@192.0.2.10 trueHost key verification failed.Volgens de handleiding van ssh_config slaat accept-new alleen de hostsleutel van nog onbekende servers zonder te vragen op. Komt er een andere sleutel dan de opgeslagen sleutel, dan wordt de verbinding geweigerd.
ssh -o StrictHostKeyChecking=accept-new user@192.0.2.10 whoamiWarning: Permanently added '192.0.2.10' (ED25519) to the list of known hosts.
userIs er voor het account geen sleutel geregistreerd, dan verschijnt [Permission denied (publickey)]. Herhaalde mislukte aanmeldingen kunnen ertoe leiden dat de server het verbindende IP blokkeert.
-v toont het verbindingsverloop als debug1-regels. De volledige uitvoer telt meer dan 70 regels, dus hieronder staan alleen de met grep gekozen regels van de verbindings- en authenticatiefase.
ssh -v -i ~/.ssh/id_ed25519 user@192.0.2.10 true 2>&1 | grep -E 'Connecting to|Connection established|remote software version|Server host key|is known and matches|can continue|Offering public key|Authenticated to|Exit status'debug1: Connecting to 192.0.2.10 [192.0.2.10] port 22.
debug1: Connection established.
debug1: Remote protocol version 2.0, remote software version OpenSSH_9.2p1 Debian-2+deb12u10
debug1: Server host key: ssh-ed25519 SHA256:9fT2kL0qX8vN4cR1yB6sW3mZ7aH5dE0uJ2pG8oK1iVc
debug1: Host '192.0.2.10' is known and matches the ED25519 host key.
debug1: Authentications that can continue: publickey,password
debug1: Offering public key: /root/.ssh/id_ed25519 ED25519 SHA256:4bN7qT1xW9cK3mR6yH0sD2fL8vZ5aJ1eP7uG3oX4iQs explicit
Authenticated to 192.0.2.10 ([192.0.2.10]:22) using "publickey".
debug1: Exit status 0De regel Connecting to is de verbindingspoging, en de regels Server host key en is known and matches zijn de hostsleutelcontrole. In de regel Offering public key werd de sleutel aangeboden, en in de regel Authenticated to was de sleutelauthenticatie klaar. Blijft het bij de authenticatie hangen, kijk dan eerst of de gewenste sleutel in de regel Offering public key verschijnt.
Met -C erbij veranderde de waarde compression in de regel kex van none in zlib@openssh.com.
ssh -v -C user@192.0.2.10 true 2>&1 | grep -E 'compression'debug1: kex: server->client cipher: aes256-gcm@openssh.com MAC: <implicit> compression: zlib@openssh.com
debug1: kex: client->server cipher: aes256-gcm@openssh.com MAC: <implicit> compression: zlib@openssh.com
debug1: Enabling compression at level 6.-X is de optie die de vensters van GUI-programma's op de externe server naar je eigen computer haalt. Uitgevoerd op een AlmaLinux-server zonder scherm verscheen een debug1-regel dat er geen DISPLAY is.
ssh -v -X user@192.0.2.10 true 2>&1 | grep DISPLAYdebug1: X11 forwarding requested but DISPLAY not setDISPLAY is de omgevingsvariabele die bepaalt waar GUI-vensters worden getoond. Daarom gebruik je -X bij verbinden vanaf een computer met een bureaublad.
🔲 Simulator voor het SSH-commando
In de simulator hieronder kun je met ssh verbinding maken met een virtuele server en zelf opties, externe commando's en ssh -G invoeren en proberen.
🔢 FAQ & aanbevolen content
SSH
SSH in Linux: definitie en basisinstellingen
Een artikel over de achtergrond van SSH, dat het onversleutelde Telnet verving, de standaardpoort 22, sleutelauthenticatie en de installatie.
Beveiliging
OpenSSH-kwetsbaarheid CVE-2024-6387: tijdelijke blokkade en patch toepassen
Een artikel over hoe de OpenSSH-kwetsbaarheid regreSSHion het alarmsignaal van de wachttijd bij het inloggen misbruikt, en in welke volgorde we eerst een tijdelijke blokkade en daarna de patch toepasten.
Cloudways
Verbinding maken met Cloudways via SFTP & SSH: FileZilla instellen, SSH-sleutel registreren en IP-whitelist
Een artikel over het registreren van een SSH-sleutel op een beheerde cloudserver, het op de whitelist zetten van het verbindende IP en daarna verbinden met ssh en FileZilla.
ℹ️ Affiliatemelding
De content van deze site bevat affiliatelinks. Koopt een bezoeker via een van deze links een product of dienst, dan ontvangt deze site een commissie van de verkoper. Het bedrag dat de koper betaalt (bij acties gaat het omlaag ↓) wordt daardoor niet hoger. De vermelde prijzen, kortingen en voorraad gelden op het moment van schrijven en kunnen afwijken; controleer ze daarom vóór je aankoop bij de verkoper. Producten worden gekozen en beoordeeld volgens onze eigen criteria, en commissies hebben geen invloed op de volgorde of de inhoud van de beoordelingen.