Product SiteDocumentation Site

9.2. Fjärrinloggning

Det är viktigt för administratörer att kunna ansluta till en fjärrdator. Avskärmade servrar har sällan permanenta tangentbord och skärmar - men de är anslutna till nätverket.

9.2.1. Säker fjärrinloggning: SSH

Protokollet SSH (Secure SHell) togs fram med säkerhet och pålitlighet i åtanke. Anslutningar med SSH är säkra; användaren är autentiserad och all data utbyts krypeterat.
SSH erbjuder två filöverföringstjänster. scp är ett kommandoradsverktyg som kan användas liknande kommandot cp förutom att sökvägar till en annan maskin inleds med maskinens namn, följt av kolon.
$ scp fil maskin:/tmp/
sftp är ett interaktivt kommando som liknar ftp. sftp kan överföra flera filer i en enda session, och det är möjligt att manipulera fjärrfiler med det (ta bort, byta namn, ändra behörigheter och så vidare).
Debian använder OpenSSH, en fri version av SSH underhållen av projektet OpenBSD (ett fritt operativsystem baserat på BSD-kärnan, fokuserat på säkerhet) och en gren av den ursprungliga SSH-programvaran utvecklad av företaget SSH Communications Security Corp, Finnland. Företaget utvecklade ursprungligen SSH som fri programvara, beslöt sig eventuellt att fortsätta utvecklingen under en sluten licens. OpenBSD-projektet skapade sedan OpenSSH för att bevara en fri version av SSH.
OpenSSH är uppdelat i två paket: klientdelen finns i paketet openssh-client och serverdelen i openssh-server. Metapaketet ssh beror på båda delar och underlättar installationen av dem (apt install ssh).

9.2.1.1. Nyckelbasera autentisering

Varje gång någon loggar in över SSH, frågar fjärrservern efter ett lösenord för att autentisera användaren. Det kan vara problematiskt om du vill automatisera en anslutning eller om du använder ett verktyg som återkommande kräver anslutningar till SSH. Därför erbjuder SSH ett nyckelbaserad autentiseringssystem.
Användaren genererar ett nyckepar på klientmaskinen med ssh-keygen -t rsa; den öppna nyckeln lagras i ~/.ssh/id_rsa.pub, medan motsvarande privata nyckel lagras i ~/.ssh/id_rsa. TAnvändaren använder sedan ssh-copy-id server för att lägga till deras öppna nyckel i filen ~/.ssh/authorized_keys på servern. Om den privata nyckeln inte var skyddad av ett ”lösenord” då den skapades kommer inloggningar till servern att fungera utan lösenord. Annars måste den privata nyckeln dekrypteras varje gång genom att skriva in lösenordet. Lyckligtvis låter ssh-agent oss undvika att skriva in lösenordet igen och igen genom att spara de privata nycklarna i minnet. För det använder du ssh-add (en gång per arbetssession) förutsatt att sessionen redan är associerade med en funktionell instans av ssh-agent. Debian activates it by default in graphical sessions, but this can be deactivated by changing /etc/X11/Xsession.options. For a console session, you can manually start it with eval $(ssh-agent).

9.2.1.2. Använda X11-fjärrprogram

SSH-protokollet gör det möjligt att vidarebefordra grafiskt innehåll (”X11-session”, namngiven från det mest välanvända grafiksystemet i Unix); servern håller då reda på en dedikerad kanal för denna data. Det innebär att ett grafiskt program som fjärrexekveras kan visas på X.org-servern lokalt, och att hela sessionen (inmatning och visning) är säker. Eftersom denna egenskap låter fjärrprogram komma åt det lokala systemet är det inaktiverat som standard. Du kan aktivera det genom att ange i serverns konfigurationsfil. Slutligen måste användare också begära den genom att lägga till flaggan -X kommandoraden för ssh.

9.2.1.3. 'Skapa krypterade tunnlar med portvidarebefordring

Flaggorna -R och -L gör att ssh kan skapa ”krypterade tunnlar” mellan två maskiner och på ett säkert sätt vidarebefodra en lokal TCP-port (se sidopanelen BACK TO BASICS TCP/UDP) till en en fjärrmaskine och vice versa.
ssh -L 8000:server:25 mellanhand etablerar en SSH-session med värden mellanhand och lyssnar på lokala porten 8000 ( se Figur 9.3, ”Vidarebefordra en lokal port med SSH”). För varje anslutning etablerad på denna på denna port, kommer ssh att starta en anslutning från datorn mellanhand till port 25 på server, och kommer att binda samman alla anslutningar tillsammans.
ssh -R 8000:server:25 mellanhand etablerar också en SSH-session till datorn mellanhand, men på denna maskin lyssnar ssh till port 8000 (se Figur 9.4, ”Vidarebefordra en fjärrport med SSH”). Varje anslutning etablerad på denna port kommer också att få ssh att öppna en anslutning från den lokal maskinen till port 75 på server, och att binda ihop anslutningarna.
I båda fallen sker anslutningarna över port 25 på värden server som passerar genom SSH-tunneln etablerade mellan den lokala maskinen och maskinen mellanhand. I det första fallet är ingången till tunneln lokal port 8000, och datan flyttar mot maskinen mellanhand innan den riktas mot server på det ”publika” nätvärket. i det andra fallet har indata och utdata för tunneln kastats om; ingången är port 8000 på maskinen mellanhand, utgång är på den lokala värden och datan vidarebefordras till server server. I praktiken är servern antingen den lokala maskinen eller mellanhanden. På det sättet säkrar SSH anslutningen från en sida till en annan.
Vidarebefordra en lokal port med SSH

Figur 9.3. Vidarebefordra en lokal port med SSH

Vidarebefordra en fjärrport med SSH

Figur 9.4. Vidarebefordra en fjärrport med SSH

9.2.2. Använda grafiska fjärrskrivbord

VNC (Virtual Network Computing) tillåter fjärråtkomst till grafiska skrivbord.
Detta verktyg används mest för teknisk assistans; administratören kan se felen som användare möter, och visa dem den rätta åtgärden utan att vara fysiskt närvarande.
Förs måste användaren auktorisera deras session. GNOMEs grafiska skrivbordsmiljö i Jessie inkluderar konfiguratationspanelen ( i motsats till i tidigare versioner av Debian, där användaren var tvungen att installera och köra vino). KDE kräver fortfarande krfb för att tillåta delning av befintlig session över VNC. För andra grafiska skrivbordsmiljöer tjänar kommandot x11vnc (från Debian-paketet med samma namn) samma syften; du kan göra det tillgängligt för användaren med en explicit ikon.
När den grafiska sessionen görs tillgänglig med VNC måste administratören ansluta till den med en VNC-klient. GNOME har vinagre och remmina för det medan KDE inkluderar krdc (i menyn för KInternetKlient för fjärrskrivbord). Det finns andra VNC-klienter som använder kommandoraden, som xvnc4viewer i Debianpaketet med samma namn. Väl ansluten kan administratören se vad som sker och fjärrjobba med maskinen samt visa användaren hur hen ska fortsätta.
VNC fungerar också för mobilanvändare eller anställda som då och då behöver logga in hemifrån för att kunna komma åt ett fjärrskrivbord liknande det de använder på jobbet. Konfigurationen för en sådan tjänst är komplicerad: först installerar du paketet vnc4server, ändrar konfigurationen för fönsterhanteraren att acceptera XDMCP Query-begäran (för gdm3 kan det utföras genom att lägga till Enable=true avsnittet “xdmcp” i filen /etc/gdm3/daemon.conf). Slutligen, starta VNC-servern med inetd så att en sessione startas automatiskt när användare försöker att logga in. Du kan till exempel lägga till denna rad i /etc/inetd.conf:
5950  stream  tcp  nowait  nobody.tty  /usr/bin/Xvnc Xvnc -inetd -query localhost -once -geometry 1024x768 -depth 16 securitytypes=none
Att dirigera om inkommande anslutningar till fönsterhanteraren löser autentiseringsproblemet, eftersom endast använda lokala konton kommer att gå vidare förbi gdm3-inloggningskärmen (eller motsvarande kdm, xdm, och så vidare). Eftersom denna åtgärd möjliggör samtidiga inloggningar utan problem (förutsatt att servern är kraftig nog), kan den även användas för att få hela skrivbord för mobilanvändare (eller för mindre kraftiga skrivbordssystem, konfigurerade som tunna klienter). Användare loggar helt enkelt in till servern med vncviewer server:50, eftersom porten som används är 5950.