Secure Shell (SSH)

Spojovací protokol

Spojovací protokol běží nad transportní a autentizační vrstvou. Umožňuje interaktivní přihlášení do systému, vzdálené spouštění příkazů, přesměrování TCP/IP spojení a přesměrování X11 spojení. Jméno služby pro tento protokol je "ssh-connection".

Všeobecné žádosti

Je několik druhů žádostí, které jsou nezávislé na kanálech. Například žádost o přesměrování určitého portu TCP/IP. Všechny takovéto žádosti mají následující strukturu:
SSH_MSG_GLOBAL_REQUEST
1 bajt určující typ zprávy.
request name
Řetězec určující požadavek.
want reply
Pravdivostní hodnota, která uvádí, zda klient očekává odpověď.

Mohou následovat další data podle konkrétní žádosti. Příjemce odpoví kladně zprávou SSH_MSG_REQUEST_SUCCESS, záporně zprávou SSH_MSG_REQUEST_FAILURE nebo jinou zprávou, pokud to vyžaduje požadavek a bit "want reply" byl nastaven na pravda.

Fungování kanálů

Všechny terminálové a přesměrované spojení jsou kanály. Obě strany mohou otevírat nové kanály. Vícero kanálů se střídá na jednom spojení. Kanály jsou identifikovány čísly na obou stranách. Žádost o otevření nového kanálu obsahuje číslo kanálu odesílatele. Všechny ostatní zprávy týkající se kanálů obsahují číslo kanálu příjemce.

Otevření kanálu

Když některá strana potřebuje otevřít nový kanál, vyhradí si pro něj místní číslo. Žádost vypadá takto:
SSH_MSG_CHANNEL_OPEN
1 bajt určující typ zprávy.
channel type
Řetězec určující typ kanálu v kódování US-ASCII.
sender channel
Číslo kanálu žadatele.
initial window size
Počáteční velikost okna. Určuje kolik bajtů může žadatel přijmout bez změny velikosti okna.
maximum packet size
Největší povolená velikost paketu. Pro interaktivní spojení můžeme nastavit menší velikost a získat tak rychlejší odezvu na pomalé lince.

Mohou následovat další data podle typu kanálu. Příjemce v případě úspěchu odpoví touto zprávou:

SSH_MSG_CHANNEL_OPEN_CONFIRMATION
1 bajt určující typ zprávy.
recipient channel
Číslo kanálu příjemce.
sender channel
Číslo kanálu odesilatele.
initial window size
Počáteční velikost okna.
maximum packet size
Největší povolená velikost paketu.

Mohou následovat další data podle typu kanálu. V případě neúspěchu příjemce odpoví zprávou SSH_MSG_CHANNEL_OPEN_FAILURE s udáním důvodu.

Přenos dat

Velikost okna určuje počet bajtů, které je možné zaslat, než se okno zaplní. Obě strany mohou požádat o zvětšení okna zprávou SSH_MSG_CHANNEL_WINDOW_ADJUST. Data se posílají zprávou SSH_MSG_CHANNEL_DATA. Velikost okna se zmenšuje podle počtu přijatých dat. Některé kanály mohou přenášet více typů dat. Například "stderr" při interaktivních spojeních. Takováto data se posílají zprávou SSH_MSG_CHANNEL_EXTENDED_DATA. Velikost těchto dat také zmenšuje velikost okna.

Uzavření kanálu

Když není potřeba posílat další data pošle se zpráva SSH_MSG_CHANNEL_EOF. Pro uzavření kanálu slouží zpráva SSH_MSG_CHANNEL_CLOSE. Kanál je uzavřen až tehdy, když druhá strana odpoví stejnou zprávou SSH_MSG_CHANNEL_CLOSE.

[<předchozí část<]  [^obsah^]  [>další část>]

xzarsky@fi.muni.cz