Jaki jest najlepszy sposób SSH na maszyny w sieci lokalnej?

61

Mam 2 komputery, jeden, z którego korzystam, a drugi dla dzieci. Chcę mieć możliwość ssh na swoim komputerze, aby kontrolować (jak wyłączyć itp.), Ale jestem ciekawy, jak to zrobić. Oboje jesteśmy w tym samym domu i dzielimy to samo połączenie internetowe.

Jaki byłby najlepszy sposób to zrobić? Z badań przeczytałem, aby zainstalować serwer openssh na komputerze zdalnym, ale jestem zaskoczony tym, czego użyć dla nazwy hosta podczas próby połączenia. Zwykle w przypadku VPS jest to zewnętrzny adres IP, ale skoro oboje dzielimy połączenie Wi-Fi, czy byłby to sprzętowy adres IP? Czy powinniśmy komunikować się bezpośrednio przez LAN, czy przez Internet?

dukevin
źródło

Odpowiedzi:

58

Biegać:

avahi-browse -tl _workstation._tcp

Aby uzyskać listę stacji roboczych Ubuntu w sieci lokalnej, możesz połączyć się z nimi, uruchamiając:

ssh <username>@<computer-name>.local
Eric Carvalho
źródło
7
Uwaga: ponieważ avahi-browsemusisz zainstalować avahi-utilspakiet (który również pobierze avahi-daemonusługę zapewniającą adresowanie lokalne).
Piskvor
2
@Piskvor Dobra uwaga. Ten pakiet jest już domyślnie zainstalowany w Ubuntu Desktop, ale nie znam innych smaków (kubuntu, lubuntu itp.). Jeśli nie jest zainstalowany, po prostu uruchom sudo apt-get install avahi-utils.
Eric Carvalho,
więc czy konieczne byłoby skonfigurowanie serwera ssh, czy np. Ubuntu 14.04 domyślnie go uruchamia?
tobi
1
Serwer @tobi SSH nie jest domyślnie instalowany. Musisz go zainstalować.
Eric Carvalho,
2
lista wydaje się pusta po uruchomieniu avahi. Oba komputery są podłączone do tego samego routera
Jose Ospina
15

Możesz użyć adresu IP do ssh do komputera dziecka. Jeśli chcesz użyć nazwy komputera, edytuj plik / etc / hosts, aby uwzględnić nazwę komputera.

192.168.1.104  dad
192.168.1.105  kids
Ed Manet
źródło
12
Należy zauważyć, że adresy IP muszą być przypisane statycznie do komputerów.
Alaa Ali,
3
Możesz włączyć sshing według nazwy bez edycji pliku hosts, nadając nazwy hostom w ~/.ssh/config: howtogeek.com/75007/…
Nathan Long
@NathanLong - Dobra wskazówka! chociaż można argumentować, że w pliku hosts umożliwia dostęp do dowolnej usługi (jeśli jest to pożądane).
stefgosselin
9

Przed wykonaniem ssh sprawdź klienta i serwer ssh. Jeśli nie masz zainstalowanej tej usługi

 sudo apt-get install openssh-client

 sudo apt-get install openssh-server

Jeśli już to zrobiłeś

 ssh username@ipaddress

 Enter connecting device login password.

Przykład:

 ssh [email protected]

 [email protected]'s password:********

Jeśli wystąpił błąd: „Odmowa zezwolenia, spróbuj ponownie”.

Sprawdź dwukrotnie nazwę użytkownika i adres IP.

PAC
źródło
8

Korzystam z pliku ~ / .ssh / config, który ssh automatycznie analizuje, oto przykład:

Host *
ControlMaster auto
ControlPath /tmp/%r@%h:%p

KeepAlive yes 
ServerAliveInterval 60
ServerAliveCountMax 10
ControlPersist 1h

Host server1
        User user1
        HostName server1-web.example.org

Host server2
        User user2
        HostName server2-db.example.org
        Compression yes
        IdentityFile /home/user/.ssh/different_key.pem

Pamiętaj, że możesz użyć dowolnej zmiennej (po stronie klienta) w tym pliku i ustawić ją globalnie lub na serwer.

Shadok
źródło
Następnie w jaki sposób można skonfigurować usługi DNS domowego Internet Gateway urządzenia do zrzeszania server1-web.example.orgoraz server2-db.example.orgz odpowiednimi serwerami?
Damian Yerrick
5
  1. Możesz ssh bezpośrednio do lokalnego adresu IP, pod warunkiem, że Twoja sieć LAN używa na przykład statycznych adresów IP
    ssh [email protected]

  2. Możesz edytować plik hosts na obu komputerach, jak wspomniał Ed Manet w swojej odpowiedzi . W ten sposób możesz następnie ssh używając nazwy hosta komputerassh someuser@some_hostname

  3. Możesz skonfigurować lokalny serwer DNS, aby rozpoznawał hosty twojej sieci LAN. W ten sposób będziesz mógł ssh używając nazwy hosta komputera jak w opcji 2, ale z dodatkową korzyścią unikania edytowania każdego pliku hosta, wskazując serwer DNS w ustawieniach sieciowych Ubuntu.

DNSMasq to całkiem niezły serwer DNS łatwy w konfiguracji.
Inną opcją jest BIND .

Stef K.
źródło
3

Użyj lokalnego adresu IP LAN. Alternatywne podejście wymaga, aby jakiś port był otwarty na Internet, aby umożliwić Ci logowanie.

Potrzebne byłoby również mapowanie portów (na routerze). Użycie „publicznego” adresu IP (na routerze) jako celu nie spowoduje połączenia z żadnym z dwóch komputerów.


Najprostszym sposobem jest trwałe przypisanie każdego adresu IP (dla 2 komputerów) routerowi. Następnie po prostu połącz się z tym adresem IP.

Jeśli chcesz być sprytny (później), skonfiguruj serwer i zacznij korzystać z lokalnej usługi DNS, aby przypisać znaczące nazwy do każdego urządzenia. Naprawdę nie warte kłopotu tylko dla 2 komputerów.

david6
źródło
1
Uwaga: obecnie wiele przyzwoitych routerów domowych odczytuje nazwy hostów stacji roboczych podczas przypisywania adresów IP i rozwiązuje je dla lokalnego DNS. Niestety, nie jest to jeszcze funkcja uniwersalna.
Piskvor
2

Jeśli dzielisz to samo połączenie internetowe, najprawdopodobniej jesteś za tym samym routerem Wi-Fi. Więc łączysz się bezpośrednio z komputerem dla dzieci:

ssh <IP-address>

lub:

ssh <user-name>@<IP-address>

Oczywiście działa to lepiej, jeśli komputer dziecięcy ma statyczny adres IP. W przeciwnym razie zawsze musisz sprawdzić, jaki jest adres IP. Większość routerów ma opcję przypisania statycznego (zawsze tego samego) adresu IP wybranym urządzeniom. Niektóre routery mają również opcję przypisania nazwy hosta do określonego urządzenia - wtedy dla dowolnego urządzenia w tym samym adresie sieciowym „dzieci” oznaczałyby to samo. Jeśli przypiszesz nazwy hosta za pomocą pliku / etc / hosts, nazwa hosta będzie znana tylko temu komputerowi, na którym znajduje się ten plik hosta. Zakłada również, że komputer dla dzieci ma statyczny adres IP.

Możesz ustawić statyczny adres IP komputera dziecięcego również na tym komputerze, ale radzę skonfigurować ustawienia sieciowe w routerze. Jeden punkt kontroli - łatwiejszy w zarządzaniu. Jeśli coś jest niejasne, zostaw komentarz, a ja poszerzę swoją odpowiedź.

Tanel Mae
źródło
Wypróbowałem Twoją sugestię, ale wystąpił błąd: ssh: connect to host xxx.xxx.x.xx port 22: connection refused- czy konieczna jest dodatkowa konfiguracja?
lukaszkups
Na tym komputerze musi być uruchomiony serwer ssh i żadna zapora sieciowa go nie blokuje itd. Może się zdarzyć, że ssh został skonfigurowany tak, aby oczekiwał połączeń na innym porcie, w którym to przypadku możliwe jest zaznaczenie przez użytkownika opcji -p użycia innego niż domyślny port (22).
Tanel Mae,
0

Możesz użyć adresu IP zamiast nazwy hosta lub przypisać niestandardową nazwę hosta do swojego /etc/hostspliku.

Aby uzyskać adres IP na komputerze dziecka: w menu sieci patrz „Informacje o połączeniu” lub uruchom ifconfigw wierszu polecenia (należy to zrobić na komputerze dziecka).

Router Wi-Fi przypisuje te adresy IP i powinieneś być w stanie skonfigurować je tak, aby zachować określone adresy IP dla komputerów, do których są aktualnie przypisane. (W przeciwnym razie adresy IP mogą się zmieniać od czasu do czasu).

AmanicA
źródło
0

Możesz po prostu przypisać nazwę komputera do komputera dziecka.
Więc po prostu zrób
ssh MachineName

Nigdy tego nie użyłem, dzieliłem się tylko myślą w mojej głowie.

Gaurav Gandhi
źródło