Introduction
OpenSSH is een krachtige verzameling tools voor de afstandsbediening van en overdracht van gegevens tussen netwerkcomputers. U leert ook over enkele van de configuratie-instellingen die mogelijk zijn met de OpenSSH server-toepassing en hoe u deze kunt wijzigen op uw Ubuntu-systeem.
OpenSSH is een vrij verkrijgbare versie van de Secure Shell (SSH) protocolfamilie van tools voor het op afstand besturen of overdragen van bestanden tussen computers. Traditionele tools die gebruikt worden om deze functies te vervullen, zoals telnet of rcp, zijn onveilig en sturen het wachtwoord van de gebruiker in duidelijke tekst wanneer gebruikt. OpenSSH biedt een server daemon en client tools om veilige, versleutelde afstandsbediening en bestandsoverdracht operaties te vergemakkelijken, effectief ter vervanging van de legacy tools.
de OpenSSH server component, sshd, luistert continu naar clientverbindingen van alle clienthulpprogramma ‘ s. Wanneer een verbindingsaanvraag optreedt, stelt sshd de juiste verbinding in, afhankelijk van het type client tool dat verbinding maakt. Als de externe computer bijvoorbeeld verbinding maakt met de SSH-clienttoepassing, stelt de OpenSSH-server na verificatie een sessie voor extern beheer in. Als een externe gebruiker verbinding maakt met een OpenSSH server met scp, start de OpenSSH server daemon een veilige kopie van bestanden tussen de server en de client na verificatie. OpenSSH kan veel verificatiemethoden gebruiken, waaronder plain password, public key en Kerberos tickets.
installatie
installatie van de OpenSSH client en server applicaties is eenvoudig. Om de OpenSSH-clienttoepassingen op uw Ubuntu-systeem te installeren, gebruikt u dit commando op een terminalprompt:
sudo apt install openssh-client
om de OpenSSH-servertoepassing en gerelateerde ondersteuningsbestanden te installeren, gebruikt u dit commando op een terminalprompt:
sudo apt install openssh-server
configuratie
u kunt het standaardgedrag van de OpenSSH-servertoepassing, sshd, door het bestand /etc/ssh/sshd_config
te bewerken. Voor informatie over de configuratie richtlijnen die in dit bestand worden gebruikt, kunt u de juiste manual pagina bekijken met het volgende commando, uitgegeven op een terminal prompt:
man sshd_config
Er zijn veel richtlijnen in het sshd configuratie bestand die zaken als communicatie-instellingen en authenticatie modi regelen. De volgende zijn voorbeelden van configuratierichtlijnen die kunnen worden gewijzigd door het /etc/ssh/sshd_config
bestand te bewerken.
Tip
voordat u het configuratiebestand bewerkt, moet u een kopie maken van het originele bestand en het beschermen tegen schrijven, zodat u de oorspronkelijke instellingen als referentie hebt en zo nodig opnieuw kunt gebruiken.
kopieer het
/etc/ssh/sshd_config
bestand en bescherm het tegen schrijven met de volgende commando ‘ s, uitgegeven op een terminal prompt:sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.originalsudo chmod a-w /etc/ssh/sshd_config.original
aangezien het verliezen van een SSH-server kan betekenen dat u de weg kwijt bent om een server te bereiken, Controleer de configuratie na het wijzigen ervan en voordat u de server opnieuw opstart:
sudo sshd -t -f /etc/ssh/sshd_config
De volgende zijn voorbeelden van configuratie instellingen u kunt wijzigen:
- Om uw OpenSSH te luisteren op TCP poort 2222 in plaats van de standaard TCP poort 22, wijziging van de Haven richtlijn als zodanig:
Poort 2222
- Om uw OpenSSH-server weergeven van de inhoud van de
/etc/issue.net
bestand als een pre-login banner toe te voegen of te wijzigen regel in het/etc/ssh/sshd_config
bestand:
Banner /etc/issue.net
na het maken van wijzigingen in de /etc/ssh/sshd_config
bestand, Sla het bestand op en herstart de SSHD server applicatie om de wijzigingen door te voeren met behulp van het volgende commando op een terminal prompt:
sudo systemctl restart sshd.service
waarschuwing
veel andere configuratie-instructies voor sshd zijn beschikbaar om het gedrag van de servertoepassing aan te passen aan uw behoeften. Wees echter geadviseerd, als uw enige manier van toegang tot een server ssh is, en u een fout maakt in het configureren van sshd via het
/etc/ssh/sshd_config
bestand, kunt u merken dat u uitgesloten bent van de server bij het opnieuw opstarten. Bovendien kan de SSHD-server weigeren om te starten als er een onjuiste configuratierichtlijn wordt opgegeven, dus wees extra voorzichtig met het bewerken van dit bestand op een externe server.
SSH sleutels
SSH staan authenticatie toe tussen twee hosts zonder de noodzaak van een wachtwoord. SSH-sleutel authenticatie gebruikt een private sleutel en een publieke sleutel.
om de sleutels te genereren, voer vanuit een terminal prompt:
ssh-keygen -t rsa
Dit zal de sleutels genereren met behulp van het RSA-algoritme. Op het moment van dit schrijven, zullen de gegenereerde sleutels 3072 bits hebben. U kunt het aantal bits wijzigen met de optie -b
. Om bijvoorbeeld sleutels met 4096 bits te genereren, kunt u het volgende doen:
ssh-keygen -t rsa -b 4096
tijdens het proces wordt u gevraagd om een wachtwoord. Druk gewoon op Enter wanneer u wordt gevraagd om de sleutel te maken.
standaard wordt de publieke sleutel opgeslagen in het bestand ~/.ssh/id_rsa.pub
, terwijl ~/.ssh/id_rsa
de private sleutel is. Kopieer nu het id_rsa.pub
bestand naar de remote host en voeg het toe aan ~/.ssh/authorized_keys
door het invoeren van:
ssh-copy-id username@remotehost
ten slotte, controleer de permissies op het authorized_keys
bestand, alleen de geverifieerde gebruiker moet lezen en schrijven rechten. Als de machtigingen niet correct zijn, wijzigen ze door:
chmod 600 .ssh/authorized_keys
u zou nu in staat moeten zijn om naar de host te SSHEN zonder om een wachtwoord te worden gevraagd.
importeer sleutels van publieke keyservers
tegenwoordig hebben veel gebruikers al ssh sleutels geregistreerd bij services zoals launchpad of github. Deze kunnen eenvoudig worden geïmporteerd met:
ssh-import-id <username-on-remote-service>
het voorvoegsel lp:
is impliciet en betekent ophalen van launchpad, het alternatieve gh:
zal het gereedschap van github laten ophalen.
tweefactorauthenticatie met U2F/FIDO
OpenSSH 8.2 Ondersteuning toegevoegd voor U2F / Fido hardware authenticatie apparaten. Deze apparaten worden gebruikt om een extra beveiligingslaag te bieden bovenop de bestaande sleutelgebaseerde authenticatie, omdat het hardwaretoken aanwezig moet zijn om de authenticatie te voltooien.
Het is zeer eenvoudig te gebruiken en in te stellen. De enige extra stap is het genereren van een nieuw toetsenbord dat kan worden gebruikt met het hardware-apparaat. Hiervoor kunnen twee sleuteltypen worden gebruikt: ecdsa-sk
en ed25519-sk
. De eerste heeft bredere hardware-ondersteuning, terwijl de laatste misschien een recenter apparaat nodig.
zodra het toetsenbord is gegenereerd, kan het worden gebruikt zoals u normaal elk ander type sleutel in openssh zou gebruiken. De enige vereiste is dat om de private sleutel te gebruiken, het U2F apparaat aanwezig moet zijn op de host.
bijvoorbeeld, sluit het U2F-apparaat aan en genereer een toetsenbord om ermee te gebruiken:
$ ssh-keygen -t ecdsa-skGenerating public/private ecdsa-sk key pair.You may need to touch your authenticator to authorize key generation. <-- touch deviceEnter file in which to save the key (/home/ubuntu/.ssh/id_ecdsa_sk): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/ubuntu/.ssh/id_ecdsa_skYour public key has been saved in /home/ubuntu/.ssh/id_ecdsa_sk.pubThe key fingerprint is:SHA256:V9PQ1MqaU8FODXdHqDiH9Mxb8XK3o5aVYDQLVl9IFRo ubuntu@focal
breng nu gewoon het publieke deel naar de server naar ~/.ssh/authorized_keys
en u bent klaar om te gaan:
$ ssh -i .ssh/id_ecdsa_sk [email protected] user presence for key ECDSA-SK SHA256:V9PQ1MqaU8FODXdHqDiH9Mxb8XK3o5aVYDQLVl9IFRo <-- touch deviceWelcome to Ubuntu Focal Fossa (GNU/Linux 5.4.0-21-generic x86_64)(...)[email protected]:~$