Wiele połączeń SSH z tym samym systemem - czy to możliwe?

14

Mam komputer z systemem Linux działający jako serwer, który może przyjmować połączenia SSH.

Czy możliwe jest niezawodne połączenie wielu urządzeń jednocześnie, takich jak mój telefon i laptop, a także innych komputerów stacjonarnych, z tym samym serwerem za pomocą SSH?

Dzięki za pomoc.

Sam3000
źródło
63
Dlaczego nie spróbowałeś przed pytaniem?
Dmitrij Grigoryev
1
Nie tylko to, ale możesz mieć wiele łączy między tą samą parą systemów. Możesz także znaleźć screenlub moshprzydatne, jeśli chcesz zachować „zdalny pulpit systemu Windows” dla wiersza poleceń: pojedynczy interfejs, który jest przekazywany wokół wielu łączy.
pjc50 28.01.16
7
Są dwa powody, dla których po prostu nie próbowałem przed pytaniem; pierwszy to brak wiary we własne rozumienie systemu Linux - gdyby zadziałał, nadal nie ufałbym jego niezawodności, jeśli polegam na nim. Po drugie, społeczność Superuser jest, ogólnie rzecz biorąc, niesamowita i szybka, aby pomóc tym, którzy pytają - dzięki społeczności.
Sam3000,

Odpowiedzi:

50

Krótka odpowiedź - tak. Zwykle działa domyślnie.

Długa odpowiedź - w zależności od tego, do czego go używasz, może spowolnić przy wielu połączeniach, ale jest to problem z przepustowością, a nie problem z ssh.

adgelbfish
źródło
15

Tak, jest to możliwe, jest to zachowanie domyślne.

Zaufanie

Państwo może polegać jeśli używasz zaktualizowaną wersję z ssha protokół nie jest dłużej 1.

grep "Protocol"  /etc/ssh/sshd_config

Powyższe polecenie powinno ci dać Protocol 2.

Limity połączeń

Możesz zobaczyć sshzaszyfrowaną ewolucję telnet, urodzoną w dalekiej 69 roku, aby umożliwić zdalny dostęp do serwera. Pamiętaj, że sshłączy się przez TCP i jest w stanie przekazywać również sesje X (sesja graficzna). Wielozadaniowość i wieloużytkownik są wewnętrzną naturą Uniksa ... nawet jeśli nie jest to nieograniczone !!!

Niektóre z tych limitów można zobaczyć w limitach TCP i SSH:

  • cat /proc/sys/net/core/somaxconn, zwykle 128, aby zobaczyć maksymalne zaległe połączenie TCP, jakie możesz mieć;

    Zmienna kern.ipc.somaxconn sysctl (8) ogranicza rozmiar kolejki nasłuchu do przyjmowania nowych połączeń TCP. Domyślna wartość 128 jest zwykle zbyt niska, aby zapewnić niezawodną obsługę nowych połączeń na mocno obciążonym serwerze WWW.

  • cat /proc/sys/net/core/netdev_max_backlog, zwykle 1000, maksymalna długość kolejki pakietów TCP
  • less /etc/security/limits.conf możesz znaleźć limity dla użytkownika.
  • MaxSessions w/etc/ssh/sshd_config

    MaxSessions Określa maksymalną dozwoloną liczbę otwartych sesji na połączenie sieciowe. Domyślnie jest to 10 .

  • #MaxStartups 10:30:60zwykle komentowane w /etc/ssh/sshd_configi domyślnie ustawione na 10

    Określa maksymalną liczbę równoczesnych nieuwierzytelnionych połączeń z demonem SSH ... Wartość domyślna to 10.


Bibliografia

Hastur
źródło
2
somaxconnto maksymalna liczba zaległych połączeń, tj. maksymalna liczba zaległych połączeń, a nie „maksymalna liczba połączeń TCP, jakie możesz mieć”. Maksymalna liczba połączeń TCP, jakie możesz mieć, to rzędy wielkości większe niż 128. W przeciwnym razie praktyczne serwery nie byłyby możliwe.
user207421,
@ejp dzięki za miejsce, spieszyłem się i tęsknię za „nowym” przed połączeniem. BTW „wybitne” jest bardziej precyzyjne. Dodałem jeszcze kilka słów w nadziei, że będzie to bardziej jasne.
Hastur
MaxSessionsogranicza tylko liczbę zmultipleksowanych sesji w ramach jednego połączenia TCP ( więcej szczegółów ), więc nie ogranicza Cię do ponownego połączenia z tym samym hostem. (Domyślny limit 10 całkowitych sesji ssh byłby absurdalny. Wyobraź sobie współdzielonego webhosta z setkami lub tysiącami kont użytkowników i dozwolonymi tylko 10 sesjami ssh.)
mówi Josef Reinstate Monica
@Josef Jest napisane MaxSessions Określa maksymalną dozwoloną liczbę otwartych sesji na połączenie sieciowe , nic innego (jak podano na stronie podręcznika): być może nie jest wystarczająco jasne. Dzięki za dodatkowe odniesienie i podkreślenie tego punktu. (Uwaga: BTW powszechne użycie komputera z systemem Linux z ssh nie jest współdzielonym hostem internetowym z kontem 10 ^ 5 + użytkowników, w takim przypadku ustawienie domyślne nie może być odpowiednie z definicji :-))
Hastur
6

Tak, całkowicie tak jest. Ale powinno to być zdefiniowane w implementacji. Równie dobrze możesz zaprogramować własny (prawdopodobnie nie tak bezpieczny i gorzej) serwer ssh, który nie obsługuje wielu połączeń. Ale podobnie jak zwykłe serwery HTTP oczywiście to obsługują, openssh też to robi.

W rzeczywistości jest to właśnie koncepcja Unix: systemu wieloużytkownikowego, w którym serwer wykonuje całą pracę i łączą się tylko mali klienci (terminale).

Larkey
źródło
4

Tak, to jest bardzo powszechne. Rzeczywiście, jeśli jest używany jako serwer plików i przez wielu użytkowników jest absolutnie niezbędny. SFTP korzysta z SSH i od tego zależy także wiele działań EDI.

Z urządzeń można wywoływać zdarzenia przy użyciu niestandardowych danych logowania użytkownika (takich jak wyłączenie zasilania lub ponowne uruchomienie).

Rozważ także SCP (WinSCP jest powszechnie używany do uzyskania dostępu do kodu źródłowego), a użytkownicy KDE nadal mogą korzystać z fish: w Konquerorze.

Godne uwagi jest również użycie dodatkowych portów w przypadku utraty podczas konserwacji (powiedzmy Ubuntu do-release-upgrade).

Więc tak, rozumiem, że nigdy nie miałeś otwartych wielu terminali PuTTY?

mckenzm
źródło
Nie dość dziwne, że nie miałem! Ale dziękuję za dodatkowe informacje, co miałeś na myśli mówiąc o dodatkowych portach do konserwacji?
Sam3000,
1
Podczas aktualizacji do-relesase ze zdalnego terminala istnieje ryzyko utraty komunikacji (powiedzmy restart SSH lub sieci). Jeśli nie można ich przywrócić na porcie 22, Ubuntu zapewnia alternatywny port 1022 przy użyciu drugiej instancji SSH. Aktualizacja odbywa się wewnątrz „ekranu”, do którego można uzyskać dostęp poprzez screen -x / screen -r po ponownym połączeniu i sudo su. (spójrz na „screen” i „tmux”). Wiele informacji na ten temat.
mckenzm