In meinem Unternehmen muss eine Serveranwendung ausgeführt werden, auf die alle Benutzer über ein Putty-Terminal zugreifen. Ich möchte ein Shell-Skript schreiben, bei dem nur 20 Putty-Terminals geöffnet sein sollen. Wenn das 21. Terminal geöffnet ist, möchte ich das Terminal sofort schließen.
Wie kann ich das erreichen?
Bitte hilf mir.
command-line
bash
scripts
vijay12289
quelle
quelle
MaxSessions
Feld zugreifen dürfen, auf 20 ein/etc/sshd_config
, oder handelt es sich hierbei um einen Ubuntu-Fehler?Antworten:
Bearbeiten Sie Ihre
/etc/sshd_config
auf dem Server und ändern Sie die Zeile:zu
Siehe
man sshd_config
:quelle
MaxSessions 20
. In den Sitzungen, die dort erwähnt werden, geht es um Dinge wie Portweiterleitungen (und sogar um das Öffnen von mehr als einer Shell), die dieselbe Verbindung verwenden, und nicht um die Anzahl der Anmeldungen auf dem System.Georges Lösung funktioniert einwandfrei, aber Sie haben nach einem Bash-Skript gefragt ...
So halten diese für andere Situationen , in denen es keine Option ist wie
MaxSessions
dersshd
, dann kann man so etwas wie folgt verwenden:Welches
pkill -n
wird die neueste Instanz von tötenprocessName
.Die richtige Lösung für diese spezielle Situation ist die Antwort von George.
quelle
Ich habe beschlossen , die erarbeiten und testen Ravexina ‚s Idee . Es funktioniert und ist effektiv, wenn Sie die Anzahl der eingerichteten SSH-Verbindungen einschränken möchten.
Zuerst habe ich festgestellt, dass es einen
sshd
Prozess gibt, wenn der ssh-Daemon ohne Verbindung ausgeführt wird . Für jede neue Verbindung werden zwei neuesshd
Prozesse erstellt. Wenn Sie also ein Limit von 20 Verbindungen wünschen, sollte der Schwellenwert 41 (1 + 2x20) anstelle von 20 sein.Dann habe ich eine ausführbare Datei mit dem Namen erstellt , die wie folgt aussieht:
/usr/local/bin/limit-sshd
Schließlich habe ich die folgende Direktive hinzugefügt
/etc/ssh/sshd_config
:$SHELL
führt die Shell des Standardbenutzers aus.sudo systemctl restart sshd.service
So funktioniert das ( klicken Sie auf das Bild, um eine animierte Demo zu sehen ):
Außerdem wurde mir klar, dass wir nichts töten müssen, wenn wir das Skript auf diese Weise ändern:
Und jeweils
/etc/ssh/sshd_config
auf diese Weise:quelle
Die Frage ist nicht klar. Lassen Sie mich zuerst sagen, wie ich es verstehe und auf welche Weise, IMO, gefragt werden sollte:
Wenn diese Interpretation korrekt ist, ist es wahrscheinlich eine richtige Möglichkeit, die Anforderungen zu erfüllen, eine Benutzergruppe zu erstellen , dann alle Benutzerkonten zu dieser Gruppe hinzuzufügen und die Anzahl der maxlogins über zu begrenzen
/etc/security/limits.conf
.Erstellen Sie eine Gruppe, die beispielsweise
the-app-maxlogins
mit der folgenden Gruppen-ID aufgerufen wird10 000
:Fügen Sie die Benutzer dieser Gruppe hinzu -
sudo adduser <user> <group>
:Fügen Sie die nächste Zeile hinzu, um die maximalen Anmeldungen der gesamten Gruppe
/etc/security/limits.conf
zu begrenzen :Oder fügen Sie die folgende Zeile hinzu, um die maximale Anzahl der Anmeldungen pro Benutzer der Gruppe zu begrenzen :
Bearbeiten
/etc/ssh/sshd_config
Sie die folgenden Zeilen und fügen Sie sie am Ende (!) Der Datei hinzu, um das Sitzungsmultiplexing für diese Gruppe zu deaktivieren (dies ist in diesem Fall möglicherweise nicht erforderlich):Diese Lösung begrenzt die Anzahl der Anmeldungen der betroffenen Benutzer, unabhängig von ssh oder tty. Wenn Sie es für einen bestimmten Benutzer und nicht für eine Gruppe anwenden möchten, fügen Sie einfach eine Zeile wie folgt hinzu
limits.conf
oder platzieren Sie sie in einer separaten.conf
Datei im Verzeichnis/etc/security/limits.d/
:MaxSessions
In dieser Antwort finden Sie eine einfache Erklärung der tatsächlichen Bedeutung der Richtlinie . Die Hauptquelle für die aktuelle Antwort ist eine andere Antwort unter derselben Frage von L & U.Die andere Antwort von mir könnte auf irgendeine Weise Abhilfe schaffen, aber es ist eher eine Art Spaß als eine echte Lösung.
quelle