Wie kann ich Systeme mit nur einem regulären Konto mit Verwaltungsaufgaben haben, die von einem einzelnen Computer verwaltet werden?
Ich möchte einfach in der Lage sein, Software auf allen Computern von einem einzigen System hinzuzufügen / zu entfernen. Großhandel - nicht einzeln bei jedem Computer anmelden und das tun, was getan werden muss. Ich kann das physisch oder per SSH tun, aber mit ungefähr hundert Computern ist das nicht wirklich eine Option, die ich in Betracht ziehen möchte.
remote-access
user-management
Oxwivi
quelle
quelle
Antworten:
Um mehrere Computer von einem zentralen Computer aus zu verwalten, können Sie versuchen, eine Systemverwaltungsplattform wie Puppet zu erlernen . Sie können mehrere Maschinen (Puppen) von einer Hauptmaschine (Puppenmeister) aus verwalten. Abhängig von Ihrem Szenario ist es vielleicht etwas übertrieben, aber es ist ein hervorragendes Werkzeug, um viele Maschinen von einem zentralen Kontrollpunkt aus zu verwalten. Es macht es auch sehr einfach, neue Maschinen einzurichten (oder die alten neu zu installieren), da Sie alle Konfigurationen, Paketlisten usw. vom Server abrufen können.
Hier ist ein Link zu einer Ubuntu -Anleitung zum Installieren und Testen von Puppetmaster.
quelle
Administratoren ausblenden
Auf jedem System wird mindestens ein Administrator benötigt, da in Ubuntu ein bestimmtes Root-Konto deaktiviert ist * . Trotzdem wäre es möglich, diesen Benutzer "Administrator" vor der GDM-Anmeldung zu verstecken, indem die folgende Zeile hinzugefügt wird
/etc/gdm/custom.conf
:Wir können den Lesezugriff von nicht administrativen Benutzern weiter einschränken
/home/administrator/
.Für Verwaltungsaufgaben anmelden wir lokal als Benutzer Administrator (zB auf der Kommandozeile oder durch die Wahl anderer in der GUI) oder remote über ssh.
Definieren Sie ssh_config
Um einen Befehl an mehrere Remotecomputer zu senden, müssen wir eine lokale Konfigurationsdatei definieren, in der
~/.ssh/ssh_config
wir Details auflisten, die für die Anmeldung an unseren Remotecomputern erforderlich sind, und in denen wir geeignete Namen für die Clients definieren können:Möglicherweise sind zusätzliche Optionen erforderlich, um die Sitzungsdetails weiter zu steuern (z. B. Deaktivieren der Kennwortauthentifizierung).
Führen Sie den Befehl auf mehreren Clients aus
Wir schreiben jetzt ein Skript, das eine Verbindung zu einem Client nach dem anderen herstellt, um einen bestimmten Befehl auszuführen:
Wenn dieses Skript benannt wurde, können
remote_command.sh
wir jeden Befehl auf unseren Remotecomputern 1-X ausführen, indem wir Folgendes aufrufen:Abhängig von den individuellen Anforderungen können wir eine Liste für $ REMOTES aus einer Datei lesen oder ein reguläres Muster für die Namen der Fernbedienungen verwenden, um die Verwendung von Skripten zu vereinfachen. Wenn sich Remoteclients nicht ändern, können wir auch alle Namen in diesem Skript codieren, um es nur mit dem Befehl aufzurufen.
* Das erneute Aktivieren des Root-Kontos (durch Definieren eines gültigen Kennworts für root mit
passwd root <password>
in einer Root-Shell) wird nicht empfohlen, da die Nachteile überwiegen.quelle
/home/users/
? Gibt es für SSH auf den von mir beschriebenen Benutzercomputern etwas einzurichten? Und wie kann ich Befehle in großen Mengen an mehrere Computer senden?/home/jack/
und/home/oxwivi/
auf Ihren Boxen haben. Jack kann (oder auch nicht!) Weitere Einschränkungen für den Zugang zu benötigen/home/oxvivi
. Abgesehen von der Ausführung eines Startskripts oder eines Cronjobs für den Zugriff auf ein Verwaltungsaufgaben-Skript, das auf Ihrem Administrationsserver gehostet wird, habe ich keine Ahnung, wie SSH-Befehle an mehrere Boxen gesendet werden sollen (für SSH müssen Sie sich remote anmelden). Ich bin kein großer Netzwerker, vielleicht gibt es eine elegantere Lösung. Neues Q, wenn dies noch nicht gefragt wurde?Es ist weder billig noch Open Source, aber vielleicht kann Canonicals Landschaft helfen.
quelle
Wenn Sie Ihr eigenes lokales Repo verwenden (wie ich denke, wenn Sie an einer Schule arbeiten, um die Bandbreitenanforderungen zu senken), können Sie einfach eine Debatte mit den Abhängigkeiten der gewünschten Software führen. Wenn Sie dann das Deb aktualisieren, gibt es einen Cron-Job für Installationsupdates, der als Root ausgeführt wird, oder was auch immer auf magische Weise geschieht. Sie benötigen nicht an jedem PC eine große Menge an direkter Steuerung. Ich würde es mit Paketmanipulation tun. Sie können sogar einmalige Ausführungsskripte auf diese Weise pushen, wenn in die Deb eine "Post-Install-Task" integriert ist.
quelle
Ich kenne keine Internet-Cafe-Software, die dies tun würde, und ich denke, so etwas wie Puppet oder Chef wäre ein Overkill. Sie können ein sehr einfaches Setup basierend auf SSH erstellen, das funktionieren würde.
Nehmen wir an, Sie haben 20 Clients (10.0.0.101 bis 10.0.0.120) und 1 Verwaltungsstation (10.0.0.1).
Alle folgenden Schritte können zunächst auf einem Client getestet werden, um die Dinge zu testen. Die Ersteinrichtung muss auf allen Clients manuell durchgeführt werden.
Schritt 1: Machen Sie es sicherer (optional?)
Erstellen Sie auf allen Clients eine Firewall-Regel, um nur neue Verbindungen ab 10.0.0.1 zu akzeptieren
Vielleicht können Sie eine weitere Frage dazu stellen. Ich kann auch helfen
iptables
, habe aber keine Erfahrung mit den neuen Ubuntu-Firewall-Regeln.Schritt 2: Stellen Sie eine Verbindung her
Auf allen Clients muss der SSH-Dienst ausgeführt werden.
ssh-keygen
, um ein SSH-Schlüsselpaar zu erhalten. Geben Sie kein Passwort ein.Fügen Sie das Konto Sudoers hinzu (z
sudo visudo
. B. mit ). Fügen Sie diese Zeile hinzu:aptaccount1 ALL=(silktree) NOPASSWD: /usr/bin/apt-get
NOPASSWD ist wichtig, da die Installationen ausgeführt werden müssen, ohne dass Sie für jeden Client nach einem Kennwort gefragt werden müssen.
Jetzt können Sie testen. Führen Sie auf Ihrer Management-Workstation Folgendes aus:
Schritt 3: Verbinden Sie alle parallel
Hier kommt mein Beitrag ins Spiel. Ich habe dieses Skript ungefähr 3 Jahre lang verwendet und bin sehr zufrieden damit. Es führt einen ssh-Befehl parallel zu vielen Knoten aus, die die Ausgabe und / oder Fehler gut drucken.
Sie müssten Ruby auf der Management Station installieren
apt-get install ruby
und alle Hosts Ihrer Clients in einer Liste in / etc / verwaltete Clients wie folgt einfügen:Und auch auf der Management Station hinzufügen zu
/etc/hosts
:Speichern Sie dann dieses Skript in
/usr/local/bin/on-all-nodes-run
Der Code wurde auf guten Codierungsstil überprüft und es gibt hier einige Screenshots: /codereview/1180/ruby-script-on-all-nodes-run-for-teaching, aber ich habe nie Zeit bekommen um diese Vorschläge vorzustellen. Der Code funktioniert so wie er ist.
Test wie folgt:
Schritt 4: Installieren Sie die Software parallel
Jetzt sollten Sie in der Lage sein, Software wie diese zu installieren und zu aktualisieren (sorry, ich habe nur das
show
Beispiel mit Eignung, aber es sollte möglich sein, dasselbe mit zu tunapt-get
):Schlussbemerkung
Wenn Sie mehr als 10 bis 20 Clients haben , sollten Sie zusätzlich zu dem obigen Skript eine Möglichkeit finden, die Festplatten mit etwas wie Perceus erneut bereitzustellen . Auf diese Weise können Sie sich Zeit sparen (Hinzufügen eines neuen Clients usw.) und sicherstellen, dass auf allen Clients alles gleich ist. In der Praxis benutze ich
on-all-nodes-run
100 Mal pro Jahr. Ich stelle mir einige Kunden einige Male im Jahr mit Perceus vor.quelle
echo "Yes" \| sudo apt-get install pbzip2
Verwenden Sie stattdessensudo apt-get -y install pbzip2
. Andernfalls könnten Sie eine Frage wie "Soll ich Ihr System beschädigen?" Mit "Ja" beantworten. ;)