Logga in säkert med SSH

19 Nov 2018

ssh

Jag skriver som bekant denna blogg i Markdown, ett sätt att skriva text med exempelvis länkar, punktlistor och annat i som sedan konverteras till HTML för att webbläsare ska förstå det. När man skriver i Markdown och dessutom använder Jekyll som “bloggmotor” har man två alternativ – antingen laddar man upp sin artikel i markdown-format till sin server och låter servern bygga filen åt dig, eller så bygger man hela sajten på sin dator och laddar sedan endast upp förändringarna i sajten till servern. Jag föredrar det senare, eftersom förändringarna oftast innefattar en eller ett par bilder och några kilobyte text.

Att sitta hemma och ladda upp detta till en server hemma är ju ingen större grej egentligen, men kanske har du inte servern hemma utan någon annanstans, eller så är du ute och flänger och därmed befinner dig i samma situation. Eller så kanske du bara vill kunna logga in via SSH till en server på Internet utan att behöva oroa dig för säkerheten.

Oavsett anledning så är detta egentligen inte överdrivet komplicerat att sätta upp. Jag kör mina servrar hemma och därmed kan jag själv bestämma rätt mycket om hur det ska se ut. Jag hade givetvis kunnat sätta upp en VPN-server men det är bökigt och omständigt och, om sanningen ska fram, inte alltid nödvändigtvis säkrare. Så jag gjorde slag i saken och installerade en virtuell [OpenBSD](http://www.openbsd.org)-server, en Unixdistribution som avgjort får anses vara en av de säkraste som går att installera. Därefter konfigurerade kopierade jag över min SSH-nyckel från min bärbara dator till filen .ssh/authorized_keys. Efter att jag kontrollerat att jag faktiskt kan logga in den vägen (bra att kolla innan man ger sig ut på fältet…) så kan jag redigera filen /etc/ssh/sshd_conf och se till att följande rader ser ut som följer:

PermitRootLogin no
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication no
ChallengeResponseAuthentication no
AllowTCPForwarding yes

Att jag har med AllowTCPForwarding yes är helt enkelt för att jag vill kunna tunnla exempelvis RDP-trafik över SSH. Trevligt och smidigt.

Ett tips är att inte öppna detta via port 22 i din brandvägg, vilket är den vanliga porten för SSH. Lägg detta hellre på en port över 1024 och kör en port forward i din brandvägg till port 22 i servern du ska använda som SSH-maskin.

Om du som jag vill ladda upp din sajt via rsync över ssh då? Så här kan det se ut om du scriptar det lite enkelt:

cd /bloggkatalog
jekyll build
rsync -avz -e "ssh -p portnummer" /blogg_katalog/site/ användarnamn@server:/path/till/bloggen/

Du kan läsa mer om hur du konfigurerar din SSH-server här!

Lycka till!