introduktion
OpenSSH är en kraftfull samling verktyg för fjärrkontroll av och överföring av data mellan nätverksdatorer. Du kommer också att lära dig om några av de möjliga konfigurationsinställningarna med OpenSSH server-applikationen och hur du ändrar dem på ditt Ubuntu-system.
OpenSSH är en fritt tillgänglig version av Secure Shell (SSH) protokollfamilj av verktyg för fjärrstyrning eller överföring av filer mellan datorer. Traditionella verktyg som används för att utföra dessa funktioner, såsom telnet eller rcp, är osäkra och överför användarens lösenord i klartext när de används. OpenSSH tillhandahåller en serverdemon och klientverktyg för att underlätta säker, krypterad fjärrkontroll och filöverföring, vilket effektivt ersätter de äldre verktygen.
OpenSSH-serverkomponenten, sshd, lyssnar kontinuerligt efter klientanslutningar från något av klientverktygen. När en anslutningsförfrågan inträffar ställer sshd in rätt anslutning beroende på vilken typ av klientverktyg som ansluter. Om fjärrdatorn till exempel ansluter till SSH-klientapplikationen konfigurerar OpenSSH-servern en fjärrkontrollsession efter autentisering. Om en fjärranvändare ansluter till en OpenSSH-server med scp initierar OpenSSH-serverdemonen en säker kopia av filer mellan servern och klienten efter autentisering. OpenSSH kan använda många autentiseringsmetoder, inklusive vanligt lösenord, offentlig nyckel och Kerberos biljetter.
Installation
Installation av OpenSSH-klient-och serverapplikationerna är enkel. För att installera OpenSSH-klientapplikationerna på ditt Ubuntu-system, använd det här kommandot vid en terminalprompt:
sudo apt install openssh-client
för att installera OpenSSH-serverprogrammet och relaterade supportfiler, använd det här kommandot vid en terminalprompt:
sudo apt install openssh-server
konfiguration
Du kan konfigurera standardbeteendet för OpenSSH-serverprogrammet, sshd, genom att redigera filen /etc/ssh/sshd_config
. För information om konfigurationsdirektiven som används i den här filen kan du se lämplig manualsida med följande kommando, utfärdat vid en terminalprompt:
man sshd_config
det finns många direktiv i sshd-konfigurationsfilen som styr sådana saker som kommunikationsinställningar och autentiseringslägen. Följande är exempel på konfigurationsdirektiv som kan ändras genom att redigera filen /etc/ssh/sshd_config
.
tips
innan du redigerar konfigurationsfilen bör du göra en kopia av originalfilen och skydda den från att skriva så att du får de ursprungliga inställningarna som referens och återanvända vid behov.
kopiera filen
/etc/ssh/sshd_config
och skydda den från att skriva med följande kommandon, utfärdade vid en terminalprompt:sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.originalsudo chmod a-w /etc/ssh/sshd_config.original
dessutom eftersom att förlora en ssh-server kan innebära att du förlorar din väg för att nå en server, kontrollera konfigurationen efter att du har ändrat den och innan du förlorar en ssh-server starta om servern:
sudo sshd -t -f /etc/ssh/sshd_config
Följande är exempel på konfigurationsdirektiv som du kan ändra:
- för att ställa in din OpenSSH för att lyssna på TCP-port 2222 istället för standard TCP-port 22, ändra Portdirektivet som sådant:
Port 2222
- för att få din openssh-server att visa innehållet i
/etc/issue.net
– filen som en banner före inloggning, lägg bara till eller ändra den här raden i/etc/ssh/sshd_config
fil:
banner /etc/fråga.net
När du har gjort ändringar i/etc/ssh/sshd_config
– filen, spara filen och starta om sshd-serverprogrammet för att genomföra ändringarna med följande kommando vid en terminalprompt:
sudo systemctl restart sshd.service
varning
många andra konfigurationsdirektiv för sshd är tillgängliga för att ändra serverapplikationens beteende för att passa dina behov. Observera dock att om din enda metod för åtkomst till en server är ssh, och du gör ett misstag när du konfigurerar sshd via
/etc/ssh/sshd_config
– filen, kan du upptäcka att du är låst ur servern när du startar om den. Dessutom, om ett felaktigt konfigurationsdirektiv levereras, kan sshd-servern vägra att starta, så var extra försiktig när du redigerar den här filen på en fjärrserver.
SSH Keys
SSH tillåter autentisering mellan två värdar utan att behöva ett lösenord. SSH key authentication använder en privat nyckel och en offentlig nyckel.
för att generera nycklarna anger du från en terminalprompt:
ssh-keygen -t rsa
detta genererar nycklarna med hjälp av RSA-algoritmen. Vid tidpunkten för detta skrivande kommer de genererade nycklarna att ha 3072 bitar. Du kan ändra antalet bitar med alternativet -b
. För att till exempel generera nycklar med 4096 bitar kan du göra:
ssh-keygen -t rsa -b 4096
under processen blir du ombedd att ange ett lösenord. Tryck helt enkelt på Enter när du uppmanas att skapa nyckeln.
som standard sparas den offentliga nyckeln i filen ~/.ssh/id_rsa.pub
, medan ~/.ssh/id_rsa
är den privata nyckeln. Kopiera nu id_rsa.pub
– filen till fjärrvärden och Lägg till den till ~/.ssh/authorized_keys
genom att ange:
ssh-copy-id username@remotehost
slutligen, dubbelkolla behörigheterna på authorized_keys
– filen, bara den autentiserad användare bör ha läs-och skrivbehörigheter. Om behörigheterna inte är korrekta ändra dem genom att:
chmod 600 .ssh/authorized_keys
Du bör nu kunna SSH till värden utan att bli ombedd att ange ett lösenord.
importera nycklar från offentliga keyservers
dessa dagar har många användare redan SSH-nycklar registrerade med tjänster som launchpad eller github. De kan enkelt importeras med:
ssh-import-id <username-on-remote-service>
prefixet lp:
är underförstått och betyder hämtning från launchpad, alternativet gh:
gör verktyget Hämta från github istället.
tvåfaktorautentisering med U2F/FIDO
OpenSSH 8.2 lagt till stöd för U2F / FIDO maskinvaruautentiseringsenheter. Dessa enheter används för att ge ett extra lager av säkerhet utöver den befintliga nyckelbaserade autentiseringen, eftersom hårdvarutoken måste vara närvarande för att slutföra autentiseringen.
det är väldigt enkelt att använda och installera. Det enda extra steget är att skapa en ny keypair som kan användas med hårdvaruenheten. För det finns det två nyckeltyper som kan användas: ecdsa-sk
och ed25519-sk
. Den förstnämnda har bredare hårdvarustöd, medan den senare kan behöva en nyare enhet.
När keypair genereras kan den användas som du normalt skulle använda någon annan typ av nyckel i openssh. Det enda kravet är att för att använda den privata nyckeln måste U2F-enheten vara närvarande på värden.
Anslut till exempel U2F-enheten och generera en keypair som ska användas med den:
$ 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
nu överför du bara den offentliga delen till servern till ~/.ssh/authorized_keys
och du är redo att gå:
$ 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]:~$