Strona używa cookies (ciasteczek). Dowiedz się więcej o celu ich używania i zmianach ustawień. Korzystając ze strony wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki.    X

Asus RT-N18U — „dodajemy SSH" — instalacja dodatkowych pakietów

Jak wspominałem w poprzednim wpisie - Asus RT-N18U ma możliwość zalogowania się do konsoli urządzenia z wykorzystaniem telnetu. Producent w tym przypadku zdecydował się na wykorzystanie mniej bezpiecznego połączenia, a SSH zarezerwował dla droższych rozwiązań. Postanowiłem jednak sprawdzić czy uda mi się je włączyć.

Podłączamy dysk zewnętrzny

Pierwsze co potrzebujemy to dysk zewnętrzny. Będziemy na nim instalować dodatkowe pakiety. Dysk USB zostanie automatycznie zamontowany w ścieżce /tmp/mnt/sda1. Następnie należy zainstalować DownloadMaster (jest to jedna z "Aplikacji USB", dostępna w webowym interfejsie użytkownika). Dzięki temu, na naszym urządzeniu zainstalowane zostaną niezbędne biblioteki i aplikacje, a na dysku USB pojawi się nowy katalog "asusware.arm". Katalog ten jest podlinkowany z /opt i znajdują się tam katalogi i pliki systemowe (dla dodatkowych aplikacji). Po instalacji DownloadMaster w systemie pojawia się także możliwość instalacji dodatkowych paczek z użyciem managera ipkg # ipkg install ssh Nothing to be done An error ocurred, return value: 4. Collected errors: Cannot find package ssh. Check the spelling or perhaps run 'ipkg update' Niestety na liście paczek nie ma ssh.

Kolejnym krokiem jest instalacja opkg. A właściwie podmiana ipkg na opkg, gdyż nie możemy korzystać z obu managerów pakietów jednocześnie. Pierwsze co musimy zrobić to dowiedzieć się jaka jest architektura procesora, który pracuje w urządzeniu #cat /proc/cpuinfo Processor : ARMv7 Processor rev 0 (v7l) BogoMIPS : 1599.07 Features : swp half thumb fastmult edsp CPU implementer : 0x41 CPU architecture: 7 CPU variant : 0x3 CPU part : 0xc09 CPU revision : 0 Hardware : Northstar Prototype Revision : 0000 Serial : 0000000000000000

cpuinfo mówi, że to armv7, spróbujmy więc pobrać instalator i zainstalować managera entware:

wget http://pkg.entware.net/binaries/armv7/installer/entware_install.sh | sh

Jesli wszystko zakończy się poprawnie, to na naszej konsoli powinniśmy zobaczyć: Configuring opkg. Configuring libstdcpp. Configuring findutils. Configuring entware-opt. Updating /opt/etc/ld.so.cache... done. Info: Congratulations! Info: If there are no errors above then Entware-ng was successfully initialized. Info: Add /opt/bin & /opt/sbin to your PATH variable Info: Add '/opt/etc/init.d/rc.unslung start' to startup script for Entware-ng services to start Info: Found a Bug? Please report at https://github.com/Entware-ng/Entware-ng/issues

Teraz logując się przez telnet do urządzenia możemy korzystać z managera pakietów opkg z dużo większą ilością pakietów. #opkg update #opkg install nazwa_paczki

Instalujemy serwer SSH

Sama instalacja jest prosta i sprowadza się do wywołania komendy #opkg install openssh-server

Po instalacji uruchamiamy serwer i otrzymujemy komunikat o niepowodzeniu: # /opt/etc/init.d/S40sshd start starting sshd... Privilege separation user sshd does not exist

Komunikat ten wyskakuje ponieważ po instalacji musimy:
- skonfigurować serwer
- dodać nowego użytkownika (niestety użytkownicy dodani przez interfejs webowy nie mogą zalogować się po ssh)
Konfiguracja polega na edycji pliku opt/etc/ssh/sshd_config (możemy wykorzystać vi, który jest domyślnym edytorem w systemie). Jeśli chodzi o konfiguracje serwera to najlepiej wykorzystać jeden z poradników dostępnych w sieci, gdyż nie ma jednego uniwersalnego i najlepszego ustawienia.

Dodanie nowego użytkownika polega z kolei na dodaniu nowego użytkownika w pliku /etc/passwd. Następnie należy ustanowić hasło dla nowego użytkownika. Hasła zapisywane są w tym samym pliku, na drugiej pozycji po nazwie użytkownika jako hashe. Aby je wygenerować możemy użyć skryptu chpasswd.sh: # chpasswd.sh nazwa_usera haslo

Po restarcie okaże się jednak, że naszego "nowego" użytkownika nie ma - plik /etc/passwd został wygenerowany raz jeszcze (przywrócony z pamięci flash) i nie możemy połączyć się z routerem. Dość długo analizowałem ten problem, jak obejść ten problem i niestety jedyne co przyszło mi do głowy to stworzenie skryptu, który za każdym razem doda użytkownika do pliku /etc/passwd #!/bin/sh echo "McD:hash_hasla:500:500::/:/bin/sh" >> /etc/passwd Ostatnia linijka to oczywiście linijka skopiowana z pliku /etc/passwd, po wykonaniu skryptu chpasswd.sh. Tak przygotowany skrypt należy zapisać (w /jffs) i wykonywać przy starcie systemu, przed uruchomieniem demona ssh, dlatego niezbędne jest dodanie nowego pliku w /opt/etc/init.d. Plik ten musi mieć nazwę niższą niż S40sshd ponieważ musi być wykonany przed inicjalizacją demona ssh, a skrypt który uruchamia usługi sortuje je właśnie po nazwie.

#!/bin/sh sleep 5s /jffs/add_user.sh Mój plik nazwałem S30init. Trzecia linia skryptu jest niezbędna ze względu na czas startu systemu - plik /etc/passwd nie jest odtwarzany jako pierwszy i bez opóźnienia zdarzało się, że skrypt wykonywał się dodając nowego użytkownika, jednak po chwili plik został zastępowanym "oryginalnym". Aby mieć pewność, że nowy użytkownik zostanie dodany na końcu pliku po jego odtworzeniu opóźniamy wykonanie skryptu dodającego użytkownika.

Po skonfigurowaniu i dodaniu użytkownika próbujemy i okazuje się, że musimy stworzyć jeszcze klucze # ./S40sshd start starting sshd... Could not load host key: /opt/etc/ssh/ssh_host_rsa_key Could not load host key: /opt/etc/ssh/ssh_host_dsa_key Could not load host key: /opt/etc/ssh/ssh_host_ecdsa_key Could not load host key: /opt/etc/ssh/ssh_host_ed25519_key sshd: no hostkeys available -- exiting.

Wygenerować je należy kolejno poleceniami, za każdym razem wskazując gdzie powinny zostać zapisane. W tym miejscu pojawia się kolejny problem. Kluczy nie powinniśmy zapisać na dysku USB - pomijając względy bezpieczeństwa musimy pamiętać, że przy każdym bootowaniu urządzenia wszystkie pliki zawarte na dysku dostają poziom bezpieczeństwa 0777. Kluczy o takim poziomie ("publicznym") OpenSSH po prostu nie przyjmie zasypując nas komunikatami ("Permissions 0777 for 'id_rsa.pub' are too open."). Jeśli bardzo chcemy oczywiście możemy trzymać tam klucze, ale niezbędny jest skrypt, który przed uruchomienie sshd zmieni poziom zabezpieczeń na niższy. Niestety zapisanie kluczy w katalogu /home lub /etc również odpada - każdy nowy plik, który się tam pojawi po restarcie znika. Na szczęście w systemie mamy również partycję jffs - oprócz logów idealnie nadaje się na skrypty oraz klucze, to właśnie tam proponuję umieścić wszystkie klucze, które wygenerować możemy poleceniami. ssh-keygen -t rsa ssh-keygen -t dsa ssh-keygen -t ecdsa ssh-keygen -t ed25519 Pamiętajmy, że w pliku sshd_config muszą być podane odpowiednie ścieżki do kluczy HostKey /jffs/.ssh/id_rsa_key HostKey /jffs/.ssh/id_key HostKey /jffs/.ssh/id_ecdsa_key HostKey /jffs/.ssh/id_key Następnie uruchamiamy usługę SSHD poleceniem /opt/etc/init.d/S40sshd start i cieszymy się możliwością połączenia za pomocą protkołu SSH do naszego routera, który domyślnie jest dostępny tylko w droższych urządzenia Asusa.  

linux sprzęt porady

Komentarze

0 nowych
rm7   7 #1 28.04.2017 00:15

Jak tam jestem zadowolony z LEDE (dawniej openWRT), gdzie od razu mam wszystko dostępne system nie działa przeciwko użytkownikowi :)

Dejlo   6 #2 28.04.2017 03:04

Pół roku męczyłem sie z tym AsusWRT. Nie montowanie dysków, znikające udziały, zawieszające sie dlna....Zainstalowalem Tomato, i zapomniałem o problemach.

szydl0   8 #3 28.04.2017 10:02

@Dejlo Popieram. Używam tego rutera z tomato by Shibby. Wszystko bardzo stabilnie, do tego vpn, ddns i śmiga. SSH działa też OotB.

GBM   22 #4 28.04.2017 10:31

W sumie posiadam TP-Link Archer C2600 i z ciekawości też go spróbuję podejść. Jakoś do tej pory nie przyszło mi to do głowy ;P

McDracullo   17 #5 28.04.2017 12:56

@Dejlo: @szydl0: a jak z wydajnością USB? Bo jak ja się chciałem przesiadać na alternatywny soft to pamiętam ze była co najmniej 2-3 krotnie niższa...

vries   7 #6 28.04.2017 15:04

@McDracullo: Wydajność musi być niższa, bo nie ma wsparcia dla sprzętowej obsługi switcha z tego, co pamiętam, a przy kopiowaniu wszystko się rozbija o procesor. Dwukrotnie, to może nie, ale parę mega spada.
test: https://openlinksys.info/forum/viewthread.php?thread_id=18177

Dejlo   6 #7 28.04.2017 15:05

@McDracullo: Jest delikatnie niższa. Nadal da się streamowac 1080p ;)
https://openlinksys.info/forum/viewthread.php?thread_id=18177

szydl0   8 #8 28.04.2017 17:01

@McDracullo: Przyznam się że nie wiem, od danych mam dysk sieciowy postawiony na NAS4Free (też szczerze polecam, ZFS rządzi).

McDracullo   17 #9 28.04.2017 18:47

@szydl0: @Dejlo: @vries: Własnie ze względu na te kilka mega nie chcę zmieniać softu. Jak widać poradziłem sobie z dodaniem tego czego potrzebowałem (czyli SSH) bez starty tych kilku mega. Dysk sieciowy do moich zastosowań na razie by się nie przydał - wystarcza mi dysk USB w routerze - używam go do małych plików tekstowych. Poza tym korzystam z niego sam, przez Wi-Fi - dużo większej wydajności bym nie uzyskał... Co innego kiedyś...

Dejlo   6 #10 28.04.2017 19:16

@McDracullo: Jeśli używasz małych plików, to tak czy siak ta prędkość nie ma znaczenia. Z tym ze nie przekonuje, sam za jakiś czas przekonasz się ze soft asusa jest mocno niedopracowany i sprawia problemy, na początku tez bylem zachwycony jego możliwościami i stabilnością ;)

McDracullo   17 #11 28.04.2017 20:38

@Dejlo: No właśnie mam go od czerwca ubiegłego roku i jakoś nie wiem o jakich problemach mówisz...

Dejlo   6 #12 29.04.2017 05:23

McDracullo:@McDraculloam pecha, albo ty szczęście ;) Możliwe ze za dużo funkcji używałem jednocześnie i po prostu nie wyrabial, chociaż pod tomato używam tyle samo i problemów nie ma.

McDracullo   17 #13 29.04.2017 09:18

@Dejlo: Od czerwca:
"Router chodził nieustannie z dwoma urządzeniami podpiętymi po Ethernecie oraz kilkoma urządzeniami podpiętymi do sieci bezprzewodowej (w szczytowych momentach nawet 12 urządzeń WiFi jednocześnie). Do tego połączenie VPN nie zawiodło mnie ani razu - nigdy nie miałem problemu z logowaniem do sieci, sam proces trwał szybko zarówno z telefonu jak i komputera. Dostęp do plików na dwóch dyskach USB również był bez zarzutów - szybko." Teraz jeszcze SSH, włączyłem AIClouda. Streaming wideo, kamera IP, obciążenie procesora niskie, ramu też zostaje mi jeszcze wystarczająco na dodatkowe usługi...

vries   7 #14 29.04.2017 11:01

@McDracullo: DLNA jest skopane na AususWRT. W każdym razie u mnie na ac68u. Bardzo mocno obciąża procesor i całość się często przez to zawiesza. Osobiście włączyłem przez przypadek, bo i tak używam SMB do multimediów. Poza tym wszystko działa w miarę dobrze, aczkolwiek ja mam buildy merlina, więc też to trochę inaczej wygląda (jest więcej funkcji).

McDracullo   17 #15 29.04.2017 11:05

@vries: Ehh... właśnie merlina na N18U nie ma i nie będzie. A szkoda... :(

Autor edytował komentarz w dniu: 29.04.2017 11:05
Dejlo   6 #16 29.04.2017 22:28

Czyli to chyba dlna było źródłem moich problemow.

Jest fork softu merlina, nie przypomnę sobie teraz jak się to zwało, poszukaj na forum SNB.

McDracullo   17 #17 02.05.2017 19:25

@Dejlo: Możesz podać namiary na ten soft? Niestety nie mogę go znaleźć...

Dejlo   6 #18 03.05.2017 06:57

@McDracullo: 20 sekund z googlem, http://www.asussmart.com/smart/479.html

Nie używałem tego,wiec się nie wypowiadam jak to działa, tyle ze wiem ze jest.

pawelllek   6 #19 03.05.2017 09:15

@Dejlo: Wiesz, że szukanie w google jest spersonalizowane i każdy widzi co innego? Niektórym łatwiej dotrzeć do pewnych linków niż innym. :(

McDracullo   17 #20 03.05.2017 14:53

@Dejlo: No mi zajęło to dużo więcej czasu, poza tym asussmart to nie forum SNB... No i tak naprawdę nie wiedziałem czego szukam. Ale dzięki - sprawdzę w wolnej chwili.