Kapitel 15 - SSH

15.1 Hur kopplar jag upp mig med SSH mot Algonet?
SSH står för Secure SHell och är ett protokoll som liknar telnet protokollet, med den skillnaden att all kommunikation sker krypterat. Detta gör det svårare att avlyssna det som du skickar. Utöver bra säkerhet i form av datakryptering så erhåller även SSH datakompression. Om du vill använda SSH mot Algonet så måste man göra några saker först.

Först lite information: Notera att detta med SSH inte är helt trivialt och kan ta lite tid att komma igång med, så misströsta inte. Ni kommer att lyckas, och om ni får problem kan ni alltid skicka ett mail till mig.

De användarservrar som finns är de som listas i inledningen på kapitel 3.

Alla saker som beskrivs nedan är för SSH1 protokollet.

Först måste du ladda hem en SSH klient. Här följer en lista på ställen där du kan plocka hem SSH klienter för olika operativsystem.

Namn URL
OpenSSH (Unix & Windows) http://www.openssh.net/
F-Secure SSH
(Windows)
http://www.f-secure.com
TeraTerm Pro
(fri Windowsklient)  
http://www.vector.co.jp/authors/VA002416/teraterm.html
TeraTerm SSH
(tillägg till ovan)
http://www.zip.com.au/~roca/ttssh.html
SSH.com SSH klient (fri för icke-kommersiellt bruk) http://www.ssh.com/products/ssh/download.html
PuTTY (fri SSH1/SSH2 klient) http://www.chiark.greenend.org.uk/~sgtatham/putty/
Fri Macklient http://www.lysator.liu.se/~jonasw/freeware.html.
MacSSH http://www.macssh.com/.

Tack till Björn Hansson, Arne Kjellman och Anders Hultman för tipsen om programmen.

Den klient jag själv använder är TeraTerm med TTSSH extensionen. Den är kanske inte den snyggaste SSH klienten, men den är lätt att använda och sätta upp för de saker man behöver.

Algonet har ändrat sin SSH server, så nu kan man använda sitt vanliga lösenord för att logga in. När du installerat TTSSH och startar den, så anger du bara den server du vill koppla upp dig mot, t.ex. kairos.algonet.se, välj SSH och trycker OK. Därefter får du upp ett nytt fönster (SSH Authentication). Ange ditt användarnamn och lösenord här, samt välj Use plain password to log in. Tryck OK, och du är klar!

Det går även bra att använda publika och privata nycklar för att logga in. Följ i så fall instruktionerna nedan.

När du installerat din SSH klient måste du skapa en publik och en privat RSA nyckel. Detta görs med programmet ssh-keygen (för Unixbaserade SSH klienter). Om du använder Windows så kan du ladda ner PuTTY:s nyckelgenerator, som heter PuTTYgen. Den kan skapa en SSH1 RSA nyckel åt dig. När man skapar en SSH nyckel så måste man ange något som kallas för en keyphrase (nyckelfras). Det är denna nyckelfras som används när du vill autenticera dig när du kopplar upp dig med SSH. Denna nyckelfras skall vara relativt lång och vara blandade bokstäver. Ta en mening som du kan komma ihåg och använd den, men som man ändå inte kan gissa sig till.

Dessa program skall köras på din lokala maskin. Unixprogrammet skapar då en fil som heter ~/.ssh/identity och ~/.ssh/identity.pub. Om du kör Windowsprogrammet så kan du själv välja vart du vill spara filen. Ange filnamnet som identity. PuTTYgen kommer då att skapa filen identity. För att skapa identity.pub så måste du kopiera texten som finns i rutan "Public key for pasting into authorized_keys file" (i PuTTYgen) och klistra in den i en textfil, som du sedan sparar som identity.pub.

När du gjort detta är det dags att skicka upp din publika nyckel till ditt Algonetkonto. Den publika nyckeln finns i filen identity.pub. Denna fil är en textfil, så när du laddar upp den med FTP måste du se till att ditt FTP program skickar upp filen i ASCII mode. När du laddar upp filen så skall den placeras i ~/.ssh/ katalogen (dvs .ssh katalogen i roten på ditt konto). Om den inte finns får du skapa den. Notera att katalogen skall ha en punkt först.

Om detta är första gången du använder SSH och inte har någon authorized_keys fil i din ~/.ssh/ katalog, så kan du döpa om identity.pub till authorized_keys. Om du redan har en authorized_keys fil som innehåller RSA nycklar, måste du lägga in din publika nyckel i den befintliga authorized_keys filen. Detta kanske låter krångligt, men det är det inte. Antingen använder du en texteditor på någon av användarservrarna, eller om du inte känner dig hemtam med Unix, så laddar du ner authorized_keys filen (i ASCII mode) och öppnar den i en texteditor (t.ex. Notepad eller Write (för Mac)). Öppna även identity.pub. Kopiera sedan identity.pub (det är en lång rad som börjar med 1024 eller 1023) och lägg in den sist i authorized_keys. Se till att det inte blir någon extra tomrad i filen. Ladda sedan upp authorized_keys till ~/.ssh/ katalogen (i ASCII mode).

Om du har flera SSH nycklar som du vill använda så kan du göra på samma sätt för varje publik nyckel (dvs lägga in identity.pub sist i authorized_keys).

Nu har du gjort färdigt sakerna på Algonet. Kopiera nu din identity fil (den privata nyckeln) till det ställe du installerat din SSH klient (på din maskin). För TeraTerm med TTSSH så kan du kopiera in den i installationskatalogen.

När man kopplar upp sig skall man se till att ange RSA som autentiseringsmetod, annars fungerar det inte.

När man kopplar upp sig mot Algonets användarservrar så måste du ange vilken privat nyckel som du vill använda. Om man använder Unixklienten så används per default ~/.ssh/identity filen, men om man har en annan, så kan man ange sökvägen till den med -i flaggan till ssh kommandot.

När det gäller Windowsklienterna så kan man också ange vilken privat nyckel (identity fil) som man vill använda. Jag kommer nu att beskriva hur man gör med TTSSH (TeraTerm).

Skapa inställningar i TTSSH

Börja med att starta TTSSH. Gå därefter in i menyn Setup och välj SSH. Om ni använder RSA (publika och privata nycklar), så ändrar ni i rutan SSH known hosts (read/write file) och skriver in ssh_known_hosts om det inte redan står där. Tryck OK.

Gå därefter in i menyn Setup och välj SSH Authentication. Skriv in ert användarnamn på Algonet som användarnamn (jag har t.ex. matax, så jag skriver matax där). Ange därefter att ni skall använda en RSA nyckel för att logga in (Use RSA to log in) om ni använder RSA, eller så väljer ni att ni vill använda ert lösenord (Use plain password to log in). Om ni använder RSA anger ni sökvägen till er identity fil (om ni placerat den i TTSSH:s installationskatalog räcker det att skriva identity i inmatningsrutan). När ni gjort det trycker ni OK.

Nu skall ni bara lägga till kairos.algonet.se eller aristotle.algonet.se i listan över servrar i TTSSH (så ni slipper skriva in det varje gång). Gå in i menyn Setup och välj TCP/IP. Skriv in kairos.algonet.se (och/eller aristotle.algonet.se, wilhelmina.algonet.se) i rutan och tryck Add. Nu finns den med i listan. Ändra Port# till 22. Tryck OK.

Spara nu TTSSH:s inställningar. Detta gör man i menyn Setup med valet Save setup. Tryck OK i rutan som kommer upp för att spara filen i TeraTerms installationskatalog.

Nu skall ni prova att koppla upp er. Välj menyn File och valet New connection. I Host skall det stå kairos.algonet.se (alt. aristotle.algonet.se eller wilhelmina.algonet.se). Klicka i SSH som Service och tryck OK.

Om ni kör RSA får ni första gången en fråga som frågar om ni vill lägga in hostens nyckel i er ssh_known_hosts fil. Svara ja här. Därefter får ni upp en ruta för inloggning. Här skall ert användarnamn redan vara ifyllt, samt att ni använder RSA för att logga in. Om inte fyller ni i dem. Därefter skriver ni in er nyckelfras i Passphrase. Om ni skrivit rätt kommer ni nu vara inloggade.

Om ni använder lösenord skriver ni bara in ert lösenord och trycker OK.

SSH2

Algonet stödjer även SSH2. Om man har en klient som stödjer SSH2 så kan man skapa DSA nycklar och logga in med SSH2 mot Algonet. Jag kommer dock inte att beskriva det här, utan lämnar det som en övning åt läsaren.

I SSH2 finns även ett protokoll som heter SFTP, som står för Secure FTP. Med det kan man köra något som liknar FTP mot servern, men allting krypteras, vilket kan vara trevligt. För att detta skall fungera behöver man dock en speciell klient som stödjer SFTP. För Windows finns det två (som jag vet om, det finns säkert fler :)) som klarar detta, och det är SecureFX från VanDyke (http://www.vandyke.com/) samt CuteFTP Pro från GlobalSCAPE Software (http://www.globalscape.com/). Notera att i det sista fallet så måste ni använda Pro versionen. Den vanliga versionen stödjer inte SFTP.

En annan fördel med att använda SFTP är att om FTP servern är nere, så kan ni fortfarande skicka upp/hämta filer från ert konto, eftersom ni använder användarservrarna för att koppla upp er med SFTP. Är användarservrarna nere så fungerar dock inte SFTP (och inte SSH heller för den delen).

För den som vill läsa mer om SSH finns http://www.algonet.se/~arnek/ssh.html.

Lite mer info om hur man loggar in finns på Wilhelmina Schedins sida om inloggning med PuTTY. Hon har även en sida om nyckelgenerering med PuTTY.

- Skrivet av Mathias Axelsson och Stefan Wikström


15.2 Hur sätter jag upp en säker kanal med SSH?
Om man vill komma åt Algonets tjänster när man inte är uppkopplad via Algonets modempool, så kan man använda SSH för att tunnla trafik, och på så sätt få tillgång till alla tjänsterna. Jag kommer här att beskriva hur en SSH tunnel fungerar och hur man sätter upp en sådan tunnel. I slutet kommer jag även att presentera en lista över några vanliga portar som man kanske vill tunnla över SSH.

Först tänkte jag förklara hur en SSH tunnel fungerar. När man kopplar upp sig med SSH mot någon av Algonets användarserverar (kairos eller aristotle) så krypteras all trafik från SSH klienten tll SSH servern (SSH servern ligger på användarservrarna). SSH har även den fördelen att den kan transportera annan trafik. Låt oss säga att man vill koppla port 5000 på sin maskin hemma till port 110 på pop.algonet.se, port 5001 på sin maskin hemma till port 143 på imap.algonet.se samt port 5002 på sin maskin hemma till port 25 på smtp.algonet.se. Då skulle själva överföringen kunna se ut så här:

Den gula stora pilen betecknar själva SSH kanalen, där allting skickas krypterat. De röda, gröna och blå strecken betecknar anslutningar som man gör från sin maskin hemma till de andra maskinerna på Algonet. All trafik över de uppkopplingarna skickas på SSH kanalen. Notera att trafiken är enbart krypterad när den går över SSH kanalen, inte när SSH servern skickar dem vidare till sina slutmål.

När man kopplar upp sig mot t.ex. port 5000 på sin maskin hemma, så kommer SSH att skicka trafiken till Algonets SSH server, och den kommer därefter att skicka trafiken vidare till pop.algonet.se på port 110.

Hur sätter man nu upp dessa SSH tunnlar? Jag tänker här förklara hur man gör med TeraTerm samt med en Unixklient. När det gäller TeraTerm (med TTSSH) så är den enklaste varianten att man först kopplar upp sig mot Algonet med SSH. Därefter går man in i menyn Setup och väljer SSH forwarding. Klicka på Add och lägg till den koppling som du vill göra. Från exemplet ovan så skulle local port vara 5000, remote machine pop.algonet.se och remote port 110. Upprepa detta för alla de tunnlar som du vill sätta upp. När du är klar trycker du OK. För att detta skall sparas till nästa gång så måste du spara TeraTerms inställningar. Gå således in på menyn Setup och välj Save setup.

En liten varning här dock: När du sparar dessa inställningar, så kommer de att användas även när du kopplar upp dig mot andra ställen än Algonet. Om du vill ha olika inställningar för olika uppkopplingar kan du spara inställningarna under olika filnamn, och sedan läsa in dem när du startar TeraTerm.

När du gjort detta är själva tunneln färdiga. Nu behöver du bara ställa om dina program till att gå mot localhost istället för t.ex. pop.algonet.se. I exemplet ovan så används localhost och port 5000 för att skapa en tunnel mot pop.algonet.se port 110. Se således till att ändra din mailklient till att använda port 5000 och localhost för att hämta mail. Om ditt mailprogram inte stödjer andra portar än 110 för POP, så får du ändra din SSH tunnel, så att du istället använder port 110 istället för port 5000.

När det gäller Unixklienter, så måste man ange de olika SSH tunnlarna när man kopplar upp sig mot Algonet, och det via kommandoradsparametrar. För detta används -L flaggan. För att göra samma sak som i exemplet ovan (localhost port 5000 till pop.algonet.se port 110), så anger man:

-L 5000:pop.algonet.se:110

som inparameter till ssh. Om du vill ha flera tunnlar anger du dem med varsinn sådan inparameter. Så här kan ett komplett exempel se ut:

ssh -l USERNAME -L 5000:pop.algonet.se:110 -L 5001:imap.algonet.se:143 -L 5002:smtp.algonet.se:25 kairos.algonet.se

Ersätt USERNAME med ert användarnamn. Jag har användarnamn matax, så då skulle jag skriva matax istället för USERNAME i exemplet ovan.

Exempel på port forwardings:

Tjänst Lokal port  Server  Remote port 
POP 110 pop.algonet.se 110
IMAP 143 imap.algonet.se 143
SMTP 25 smtp.algonet.se 25
NNTP (News)  119 news.algonet.se  119

Många har provat att tunnla FTP med olika resultat. FTP protokollet är lite mer komplext än de andra protokollen ovan, då den använder mer än en uppkoppling. Det går således inte att tunnla all trafik i FTP, så för att undvika misstag och problem med detta, har jag valt att helt plocka bort texten om FTP tunnling från detta kapitel. Om ni vill skicka filer säkert får ni använda SFTP istället.

Tack till Lars Aronsson och Arne Kjellman för hjälp med detta avsnitt.