LM17 jako SSH server – 1. část

termPro ty jenž dávají přednost příkazovému řádku tu máme návod jak si vzdáleně zpřístupnit shell (SSH) na svém PC. K čemu je to dobré? Na rozdíl od VNC nebo Teamvieweru si uděláme z LM17 server, to znamená, že se můžeme připojovat bez ohledu na to kdo právě na našem PC pracuje. Tzn. nikoho nezdržujeme v práci a naopak ani nikdo nepozná, že jsme připojeni. Ovšem jedná se o příkazovou řádku takže bez grafického prostředí.Tak jdeme na to? 🙂

Nejprve je třeba si nainstalovat SSH server. To provedeme zadáním příkazu v terminálu:

Příkaz terminálu:
sudo apt-get install openssh-server openssh-client

Nyní si trochu uděláme jasno v IP adresách. Nejprve si zjistíme IP adresu našeho LM17 (nyní již serveru) to provedeme příkazem v terminálu:

Příkaz terminálu:
ifconfig

Dále si zjistíme IP v internetu. To zjistíme např. na stránce http://www.myipaddress.com/show-my-ip-address/. Zjištěné údaje by měly vypadat např. takto:

10.0.0.32 (ifconfig)
66.666.66.66 (myipaddress.com)

Po instalaci služby SSH se nám otevře port 22, na kterém běží služba SSH. To si můžeme jednoduše ověřit ve firewallu gufw. Spustíme jej buď přes Menu – Volby – Nastavení firewallu, nebo z terminálu:

Příkaz terminálu:
gufw

Pokud není nainstalován provedeme instalaci:

Příkaz terminálu:
sudo apt-get install gufw

Z důvodu aby nám nešmejdil po pc nějaký nezvaný návštěvník si firewall nejprve (pokud není) zapneme:

SSH-1

Následně si ověříme, že nám běží port 22:

SSH-2

A) PŘIPOJENÍ PŘES OVĚŘENOU IP ADRESU

Nyní je ale přístup zakázaný podle pravidla Incoming: zakázat, jeho povolení provedeme pomocí přidání pravidla. Pokud tedy již víme, že moje IP je 10.0.0.32 a IP počítače odkud se budu připojovat bude třeba 88.88.888.88 bude pravidlo vypadat následovně:

Port u 88.88.888.88 necháme nevyplněn. Nyní už máme vše pěkně nastaveno a pokud se zkusíme z IP 88.88.888.88 připojit, což provedeme příkazem:

Příkaz terminálu:
ssh 66.666.66.66

nebo

Příkaz terminálu:
ssh username@66.666.66.66

tak to nepůjde 😀 . Adresa 10.0.0.32 totiž znamená, že se jedná o adresu vnitřní sítě, tzn. že náš LM17 je až „za modemem“. V mém případě se modem nachází na adrese 10.0.0.138 a jeho IP je právě ta IP, kterou jsme již dříve zjistili na stránkách www.myipaddress.com. Aby byl možný přístup z internetu na náš server 10.0.0.32 je potřeba povolit port v modemu a provést jeho přesměrování na 10.0.0.32. V mém případě bude povolení vypadat následovně:

Uvedený záznam znamená, že pokud někdo vyšle požadavek na IP 66.666.66.66 port 22 nebo 222 (modem) dojde k přesměrování na IP 10.0.0.32 port 22 (LM server). Pokud bychom měli „za modemem“ ve vnitřní síti další počítač, třeba IP 10.0.0.33 nelze už IP 66.666.66.66 port 22 použít a musíme využít jiný port např. ten 222. První řádek záznamu by pak tedy byl:

ssh – 222 – 222 -TCP – 22 – 22 – 10.0.0.33

a syntaxe pro přístup na IP 10.0.0.33:

Příkaz terminálu:
ssh -p 222 username@66.666.66.66

B) PŘIPOJENÍ PŘES AUTORIZAČNÍ KLÍČ

Pokud nechceme stále sledovat a aktualizovat IP adresy klientských počítačů je dobré si nastavit ověřování přes autorizační klíč. To provedeme následovně:

Nejprve si na serveru 10.0.0.32 vypneme autentifikaci pomocí hesla tím, že si s právy správce otevřeme /etc/ssh/sshd_config
najdeme položku PasswordAuthentication, odremujeme (smažeme # na začátku řádku) a přepíšeme „yes“ na “no”, dále položku  UsePAM a nastavíme na „no“. Restartujeme SSH:

Příkaz terminálu:
sudo service ssh restart

Na klientském počítači 88.88.888.88 si vygenerujeme klíč. Můžeme použít například DSA:

Příkaz terminálu:
ssh-keygen -t dsa

Pro silnější šifru můžeme použít RSA a atribut -b:

Příkaz terminálu:
ssh-keygen -t rsa -b 4096

Cestu ponecháme stejnou (potvrdíme entrem) a nastavíme si heslo, které bude pro připojování vyžadováno (pokud heslo nechceme potvrdíme entrem prázdné heslo). Generátor si hlídá i sílu hesla, pokud zadáme moc slabé heslo, klíč se nevygeneruje:

SSH-6

Pokud je vše v pořádku bude výstup z generátoru vypadat takto:

SSH-7

v adresáři /home/%username%/.ssh se nám vytvoří 2 soubory id_dsa (id_rsa) což je privátní klíč a id_dsa.pub (id_rsa.pub) což je veřejný klíč.

Na serveru 10.0.0.32 do souboru /home/%username%/.ssh/authorized_keys nakopírujeme obsah souboru id_dsa.pub. Můžeme rovnou přejmenovat id_dsa.pub na authorized_keys, pokud neexistuje. Jde o to, že authorized_keys může obsahovat více klíčů, tak abychom nepřepsali již vytvořené.

Pokud se rozhodnete pro autorizační klíč nezapomeňte na serveru změnit pravidlo v gufw a nastavit jej takto:

SSH-5

Pokud totiž nevyplníme IP a port odkud se připojujeme znamená to, že je to povoleno odkudkoli. Pokud tedy budu mít například nainstalovaný SSH server na IP 10.0.2.15 a zkusím se na něj připojit aniž bych přidal svůj klíč do authorized_keys sice si uložím otisk serveru, ale vypíše se Permission denied.

SSH-8

Pokud uložím svůj id_dsa.pub do authorized_keys přístup už bude povolen:

SSH-9

Všímavá duše si možná všimla, že se název pc nezměnil, je to tím že pro ukázku jsem se připojil sám na sebe, v reálu pak bude poslední řádek místo michal@michal-VirtualBox ~ $ např.: jelibuk@koktaPC ~ $ a pak už můžeme v klidu šmejdit:

SSH-10

SSH-11

Související články:
LM17 jako SSH server – 2. část
LM17 jako SSH server – 3. část
LM17 jako SSH server – 4. část
LM17 jako SSH server – 5. část
LM17 jako SSH server – 6. část
LM17 jako SSH server – 7. část
LM17 jako SSH server – 8. část

Štítky , , , , , , .Záložka pro permanentní odkaz.

2 reakce na LM17 jako SSH server – 1. část

  1. dusevna hniloba říká:

    Vdaka za návod 🙂

  2. t říká:

    este by som pridal alternarivu, menej narocnu ako je dropbear
    Tie pouzite IP mi riadne zasvietili do oci. To by ma nenapadlo pouzivat ako priklad.