SSH multiplexing på språng

Många SSH-användare använder multiplexing för snabba upp arbetet. Metoden sparar tid men kan orsaka problem när datorn byter eller tappar nätverk. Här finns mina anteckningar med en metod för att undvika låsta sessioner.

Vid varje SSH-anslutning sker handskakning för kryptering och autentisering. Det tar tid och ett riktigt gissel om systemet du ansluter till kräver 2FA. Fördröjningen blir särskilt tydlig för den som ofta öppnar nya terminalfönster mot samma server eller har ett script som utför upprepade anslutningar t.ex för att utföra underhållskommandon.

Lösningen är multiplexing via ControlMaster. Funktionen gör att SSH skapar en socket på den lokala datorn och återanvänder den redan etablerade anslutning för efterföljande sessioner. Det ger en upplevelse av att inloggningen sker ögonblickligen.

Men det finns fallgropar som kan göra arbetet svårare i stället för lättare.

Det vanligaste problemet uppstår när datorn byter nätverk, till exempel när en bärbar dator flyttas från kontoret till hemmet eller när datorn går i viloläge.  Om den ursprungliga anslutningen bryts utan att stängas korrekt finns socketen kvar på klientdatorn. Nästa gång användaren försöker ansluta tror SSH att kontakten fortfarande fungerar. Resultatet blir att terminalen hänger sig och användaren måste vänta på en timeout.

Ett annat problem rör filsystemet. Många operativsystem har en gräns för hur långa sökvägar till filer får vara. En vanlig konfiguration använder serverns namn i filnamnet för socket-filen. Om servernamnet är långt, vilket inte är helt ovanligt i moderna molnmiljöer, misslyckas anslutningen helt.

För att undvika problemen krävs anpassad konfiguration. Den bör innehålla en tidsgräns för hur länge en anslutning får leva och en metod för att hålla filnamnen korta.

Följande steg fungerar för en användare med Macos eller Linux.

1. Skapa en mapp för sockets SSH skapar inte mappen automatiskt. Detta måste göras före konfigurationen läggs in. 

mkdir -p ~/.ssh/sockets

2. Uppdatera konfigurationen Redigera filen ~/.ssh/config. Använd Host * för att reglerna ska gälla alla servrar, eller specificera enskilda värdar.

Host *
    ControlMaster auto
    ControlPath ~/.ssh/sockets/%C
    ControlPersist 10m

I exemplet ovan används %C. Det instruerar SSH att skapa en hash-kod av anslutningsuppgifterna i stället för att skriva ut hela servernamnet. Det garanterar att sökvägen aldrig blir för lång.
 
ControlPersist 10m anger att anslutningen ska hållas öppen i tio minuter efter att sista anslutnigen stängts.

Hantera låsta anslutningar

Även med en bra konfiguration kan en session hänga sig om nätverket är instabilt. Det enklaste sättet att lösa detta är att radera socket-filerna.

Lägg gärna in ett alias i din profilfil (exempelvis .bashrc eller .zshrc) för att snabbt kunna rensa upp.

alias fixssh="rm -f ~/.ssh/sockets/* && echo 'Anslutningar rensade'"

Genom att använda dessa inställningar blir arbetet i terminalen snabbare och stabilare. Ju fler servrar du hanterar, desto större nytta har du av en korrekt uppsatt miljö. 

Gengångare

Wszystkich swietych cmentarz. Foto:Mikael Häggström.  Licens: FDL

På alla helgons dag firar vi inte bara helgon och martyer utan blickar även tillbaka, minns våra absent friends och evigt förlorat älskade. 

Hur hedrar man sin första dator på ett bättre sätt än att ersätta några skalskript med lite oldschool BASIC-kod?

Idag har jag komplierat pagetable’s tolkare av Commadore BASIC på min Macbook och frukosthackat lite fulloopar. Det kan du också göra – källkoden går att bygga på GNU/Linux, Windows eller OS X. Om du är lat finns det även binärer.

Happy halloween hacking! 

Pagetable.com: Commodore BASIC as a Scripting Language for UNIX and Windows

Nytt hopp för bättre drivrutiner till Linux

Att koppla in avancerad eller modern hårdvara i ett GNU/Linux-system är nästan alltid ett gissel. Ofta är drivrutinen krångligt att konfigurera, ibland fylld med säkerhetshål eller rent skräp – men allt som oftast helt obefintligt. Det finns ett fåtal hårdvarutillverkare som släpper egna drivrutiner. Men de är oftast stängda binärer som inte hänger med i kernelns utveckling.

SUSE startade i höstas ett hedervärt projekt där de kan ta ansvar för att underhålla och uppdatera drivrutiner. Problemet är att detta har varit något som riktats mot Enterprise-kunder (som användare) och minst Silver-partners (som tillverkare) och är inte något som direkt gynnar hela linuxcommunityn. Det finns inte heller många tillverkare som vill satsa pengar på en ”så marginell marknad”.
Det finns dock gott hopp om bättring! Greg Kroah-Hartman, en tongivande kernelutvecklare och författare till boken Linux Kernel in a Nutshell postade igår en inbjudan till världens hårdvarutillverkare. Han säger att en grupp kernelutvecklare nu erbjuder sig att gratis utveckla drivrutiner för hårdvara som idag saknar stöd.

Det enda som utvecklarna kräver är specifikationer på hårdvaran och direktkontakt med en ingenjör som vid behov kan svara på frågor.

In return, you will receive a complete and working Linux driver that is added to the main Linux kernel source tree. The driver will be written by some of the members of the Linux kernel developer community (over 1500 strong and growing). This driver will then be automatically included in all Linux distributions, including the ”enterprise” ones. It will be automatically kept up to date and working through all Linux kernel API changes. This driver will work with all of the different CPU types supported by Linux, the largest number of CPU types supported by any operating system ever before in the history of computing.

För att företagen inte ska behöva oroa sig över information om spjutspettsteknik ska läcka ut har gruppen i sammarbet med Open Software Development Lab/The Linux Foundation utvecklat ett NDA där tillverkarens hemligheter skyddas samtidigt som det inte finns några egna utvecklingskostnader:

Nu kommer era utvecklare att ha mer tid över till att arbeta  med drivrutiner  till alla andra operativsystem som finns där ute, och ni kan märka ert marknadsföringsmaterial med ”Stöd för Linux”.

Kroah-Hartman påpekar noga att erbjudandet gäller *all sorts hårdvara*

Det här erbjudandet gäller alla typer av enheter, från USB-leksaker till PCI-grafikkort till höghastighetsnätverksskort. Om ni har tillverkat det kan vi fixa drivrutiner för linux åt det.

Tio senaste: