Sshd-speed

Fra GNUskole

Gå til: navigasjon, søk

Hmmm... det ser ut til at dette ikke er nødvendig lengre. Jeg overførte nettopp data via scp med 25MB/s over en 1Gb-linje. Den ene CPUen nesten makset ut, så jeg regner med det var grunnen til begresningen av hastighet.


Innhold

Bakgrunn

SSH-protokollen har en svakhet - bufferstørrelsen på pakkene er ikke større enn 64KB. Det betyr i praksis at du ikke kan overføre raskere enn ca. 200KB/s (2Mb/s) uansett hvor kjapp maskinen din er eller hvor raskt nettverket ditt er. Selvfølgelig har nå noen laget en patch til kildekoden til openSSH slik at dette problemet kan omgås. Under finner du en oppskrift for hvordan du kan gjøre dette på en CentOS-installasjon.

Det er bare nødvendige å installere denne patchen på tjener-siden for å få raskere kommunikasjon mellom klienter og tjener. Patchen er laget slik at alle ssh- og sftp-klienter vil virke uten modifikasjoner av dem.

Last ned nødvendige programmer

Du trenger å hente patchen til kilde koden her. Husk hvilken utgave ut laster ned patchen til (siste utgave i skrivende stund er openssh v4.6p1). Her kan du også lese litt mer om hvorfor SSH er så tregt.

Last så ned kildekoden til tilsvarende versjon her.

La begge pakkene du lastet ned ligge i samme katalogen før du skriver disse kommandoene:

# tar -zxvf openssh-4.6p1.tar.gz
# gunzip openssh-4.6.p1-hpn12v17.diff.gz
# patch -p0 <openssh-4.6.p1-hpn12v17.diff

Nå har du pakket ut alt og patched kildekoden til OpenSSH.

Kompiler ny utgave av OpenSSH

For å kunne kompilere en ny utgave av OpenSSH trenger du et par pakker som antakelig ikke er installert sammen med CentOS-installasjonen. De skaffer du enkelt med å skrive:

# yum install gcc openssl-devel zlib-devel

Da får du en C-kompilator og et par nødvendige biblioteker.

For å kompilere OpenSSH skriver du følgende kommandoer når du står i katalogen med kildekoden til OpenSSH (openssh-4.6p1):

# ./configure
# make

Installasjon av OpenSSH

Nå har du kompilert en ny utgave av OpenSSH som kan overføre data mye raskere enn den gamle, men du trenger å installere det slik at CentOS benytter seg av den. Skriv kommandoen:

# make install

Nå er en rekke filer kopier til forskjellige katalogen, men du må gjøre et par små endringer siden disse filene ikke har overskrevet de gamle (slik at du lett kan gå tilbake til det gamle systemet). Du må gjøre to rettinger i filen /etc/rc.d/rc5.d/init.d/sshd

KEYGEN=/usr/local/bin/ssh-keygen
SSHD=/usr/local/sbin/sshd

Så må du restarte sshd-tjenesten med kommandoen:

# service sshd restart

Nå skulle alt virke :-)

Avinstallasjon

Om du ikke skulle like det du har gjort kan du alltids gå til katalogen med kildekoden for OpenSSH og skrive:

# make uninstall

Da tas alle aktuelle filer vekk. Du må selv gjøre rettingen i /etc/rc.d/rc5.d/init.d/sshd med å ta vekk local de to stedene du la det til.


OBS!

Det er en bug i den siste utgaven av OpenSSH (v4.6). FreeNX har problemer med å autentisere brukere med denne utgaven av OpenSSH. Så bruker du FreeNX, må du finne en eldre utgave av OpenSSH (CentOS v5 bruker v4.2).

Personlige verktøy
Navnerom
Varianter
Handlinger
Navigasjon
Verktøy