Pro 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:
Následně si ověříme, že nám běží port 22:
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:
Pokud je vše v pořádku bude výstup z generátoru vypadat takto:
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:
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.
Pokud uložím svůj id_dsa.pub do authorized_keys přístup už bude povolen:
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:
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
Vdaka za návod 🙂
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.