Erstellen Sie einen neuen SSH-Benutzer auf Ubuntu Server

104

Ich habe gerade einen neuen virtuellen Ubuntu-Server erstellt und bin dabei, ihn für den produktiven Einsatz zu härten. Ich habe derzeit ein Root-Konto. Ich möchte Folgendes tun:

  • Erstellen Sie einen neuen Benutzer (nennen wir ihn jimfür den Rest). Ich möchte, dass sie ein /home/Verzeichnis haben.
  • Geben Sie jimSSH-Zugriff.
  • Lassen Sie root aber nicht durchführen Operationen.jimsusudo
  • Deaktivieren Sie den Root-SSH-Zugriff.
  • Verschieben Sie SSHd an einen nicht standardmäßigen Port, um Brute-Attacken zu verhindern.

Mein Problem liegt bei den ersten beiden Punkten. Ich habe bereits festgestellt, useraddaber aus irgendeinem Grund kann ich mich nicht als ein Benutzer anmelden, der damit über SSH erstellt wurde. Muss ich SSHd schlagen, um dies zu ermöglichen?

Oli
quelle
Hallo! Ich kann dir auf Servern helfen, ich weiß nicht, was dein Problem mit SSH ist, denn bei mir mit Standardkonfiguration lehnt meine Verbindung nie ab. Möglicherweise sehen Sie man 5 nologin , dies schreibt, dass Sie sich nur mit root anmelden können, wenn / etc / nologin existiert. Versuchen Sie sich normal anzumelden und schreiben Sie die Ergebnisse.
Antivirtel
Was ist die Shell des Benutzers? Ist es / bin / bash? Überprüfen Sie das in / etc / password. Stellen Sie sicher, dass es nicht / dev / null oder / bin / false ist.
LFC_fan
Ja, auch LFC_fan oder / etc / nologin. Verwenden Sie (sudo) cat / etc / passwd | grep jim
antivirtel
1
@B. Roland Ich habe eine /etc/nologinAkte, aber sie ist leer. Ich habe es gelöscht und ssh neu gestartet, aber es reagiert immer noch nur, Permission denied, please try again.wenn ich mich anmelde.
Oli
@ LFC_fan ist es / bin / bash
Oli

Antworten:

99

Bearbeiten (als root) /etc/ssh/sshd_config. Fügen Sie Folgendes hinzu:

Port 1234
PermitRootLogin no
AllowUsers jim

Port 1234Lässt SSH auf Port 1234 lauschen. Sie können jeden nicht verwendeten Port von 1 bis 65535 verwenden. Es wird empfohlen, einen privilegierten Port (Port 1-1024) zu wählen, der nur von Root verwendet werden kann. Wenn Ihr SSH-Dämon aus irgendeinem Grund nicht mehr funktioniert, kann eine unerwünschte Anwendung die Verbindung nicht abfangen.

PermitRootLogin Erlaubt keine direkte Root-Anmeldung.

AllowUsers jimErmöglicht dem Benutzer jim, sich über SSH anzumelden. Wenn Sie sich nicht von überall aus anmelden müssen, können Sie dies sicherer machen, indem Sie jim auf eine IP-Adresse beschränken (ersetzen Sie 1.2.3.4 durch Ihre tatsächliche IP-Adresse):

AllowUsers [email protected]

Änderungen an der Konfigurationsdatei /etc/ssh/sshd_configwerden nicht sofort übernommen. Führen Sie zum erneuten Laden der Konfiguration Folgendes aus:

sudo service ssh reload
Lekensteyn
quelle
10
+1: Hinweis: Diese Anleitung gilt weiterhin für neuere Versionen von Ubuntu (zB 13.04). Wenn Sie das tun wollen , rootLogin, aber (vielleicht sind die Einrichtung Sie noch den Server), müssen Sie PermitRootLoginzu yesund auch hinzufügen rootzu AllowUsers.
JRG-Developer
4
Wie lautet das Passwort für diesen Benutzer?
Wolfpack'08
Mein VPS wird mit einem Root-Passwort für die SSH-Anmeldung an Port 22 ausgeliefert. Das Anhängen der Antwort an sshd_config führt dazu, dass sich der Root nicht anmelden kann. Liegt dies daran, dass ich auch Port 22 für Jim verwendet habe, oder gibt es einen anderen Grund?
Wolfpack'08
1
@Lekensteyn ich einen neuen Benutzer Ubuntu gerade gefunden habe das Hinzufügen schafft sich eine SSH Konto für diesen Benutzer .... useradd -m -G sudo,adm -s /bin/bash mecharokundpasswd mecharok
Wolfpack'08
3
@ Wolfpack'08 Wird verwendet AllowUsers username1,username2, um SSH-Anmeldungen auf diese Benutzer zu beschränken. Stellen Sie sicher, dass sshdneu geladen wird. Wenn dies nicht hilft, erstellen Sie bitte eine neue Frage.
Lekensteyn
96

SSH ist sehr wählerisch in Bezug auf die Verzeichnis- und Dateiberechtigungen. Stelle sicher das:

  1. Das Verzeichnis /home/username/.ssh hat die Berechtigung "700" und gehört dem Benutzer (nicht root!)
  2. Die Datei / home / username / ssh / authorized_keys hat die Berechtigung "600" und gehört dem Benutzer

Kopieren Sie Ihren öffentlichen Schlüssel in die Datei authorized_keys.

sudo chown -R username:username /home/username/.ssh
sudo chmod 0700 /home/username/.ssh
sudo chmod 0600 /home/username/.ssh/authorized_keys

Es gibt KEINE Notwendigkeit , den Benutzer in / etc / ssh / ssh_config hinzuzufügen.

dh1tw
quelle
1
Mein Problem wurde erkannt, ich habe es ~./sshals root angelegt und dem Benutzer nie den Besitz gegeben.
Gerve
1
Mein Problem war, dass ich versuchte, /root/.ssh/authorized_keysanstatt zu verwenden /home/bob/.ssh/authorized_keys.
Alex W
Ich kann bestätigen: Auf unserem VPS-Hosting war keine Bearbeitung erforderlich ssh_config. Das Einrichten dieses Verzeichnisses und dieser Datei war ausreichend.
Superjos
2
Für mich musste es chmod 755 /home/username/.ssh sein, sonst würde es nicht funktionieren.
Jim W
Viel einfacher, sich als Benutzer (oder sudo su --login {user}) ssh-keygenanzumelden und auszuführen -> Der Ordner ".ssh", der Schlüssel + das Zertifikat und die Berechtigungen sind vervollständigt. Erstellen Sie einfach authorisierte_Schlüssel gemäß Ihren Anweisungen.
bshea
13

Es wird Hinweise geben, /var/log/auth.logwarum SSH (oder PAM) den Anmeldeversuch ablehnt. Zusätzliche Hinweise können mithilfe der -vOption mit dem ssh- Client gefunden werden. Einige häufige Situationen, von denen einige in den anderen Antworten erwähnt werden:

  • Dem Benutzerkonto fehlt ein Kennwort oder es ist anderweitig deaktiviert (siehe man passwd, setzen Sie das Kennwort zurück oder überprüfen Sie den Inhalt von /etc/shadow).
  • /etc/ssh/sshd_configkonfiguriert ist , die Anmeldung nicht zuzulassen ( DenyUsers, AllowUsers, PasswordAuthentication, PubkeyAuthentication, UsePAMusw., siehe man sshd_config).
  • Die Shell des Benutzers ist in nicht aufgeführt /etc/shells.
  • verschiedene Berechtigungsprobleme auf Verzeichnisse oder Dateien auf SSH Betrieb bezogen werden : /etc/ssh, /home/jim/.ssh, /home/jim/.ssh/*etc.

Ich würde auch empfehlen, adduser (anstelle von useradd ) zum Hinzufügen neuer Benutzer zu verwenden. Es ist ein wenig freundlicher über verschiedene Standard-Kontoeinstellungen.

Solange der Benutzer nicht Teil der adminGruppe ist, kann er nicht als root angemeldet werden . Damit sie su verwenden können , müssen Sie ein root-Passwort ( passwd root) festlegen. Danach empfehle ich die Einstellung PermitRootLogin=noin /etc/ssh/sshd_config.

Kees Cook
quelle
Vielen Dank für die tolle Antwort - speziell "adduser" hat mir sehr geholfen!
vishal.biyani
11

Ich könnte mich irren, aber ich muss immer den Server-Daemon installieren, bevor ich eine Verbindung herstellen kann (zumindest auf dem Desktop). Ssh ist standardmäßig installiert, aber das ist nur der Client

Dieser Befehl installiert den Server

sudo apt-get install openssh-server

Sie können den Port ändern und die Root-Anmeldung durch Bearbeiten beenden

/etc/ssh/sshd_config

Dies erfordert jedoch einen Neustart des Dienstes.

sudo service ssh restart

Matt Mootz
quelle
Dies ist ein virtueller Server (VPS), sodass SSH standardmäßig installiert ist. Es ist meine einzige Schnittstelle zum Server. Und Sie können die Konfiguration über neu laden sudo /etc/init.d/ssh reload, aber trotzdem gute Informationen.
Oli
8

Jim hat keinen SSH-Zugang, bis Sie ein Passwort festgelegt haben. Als root ausführen:

grep -i "jim" /etc/shadow | awk -F':' '{ print $2 }'

Wenn dieser Befehl ein "!" Zeichen, dann ist die Anmeldung für dieses Konto deaktiviert. Wenn Sie passwd jimals root ausführen, werden Sie aufgefordert, eine neue und bestätigte Kennwortzeichenfolge einzugeben. Danach sollte der obige Befehl grep eine Hash-Zeichenfolge zurückgeben, die das Kennwort für jim darstellt.

Stellen Sie außerdem sicher, dass jim über eine standardmäßig festgelegte Anmeldeshell und ein vorhandenes Basisverzeichnis verfügt.

Beachten Sie den Beitrag von lekensteyn, um Informationen zum Ändern der SSH-Servereinstellungen zu erhalten.

Tok
quelle
"Wenn dieser Befehl ein"! "- Zeichen zurückgibt, ist die Anmeldung für dieses Konto deaktiviert." nur, dass Sie es nicht mit einem Passwort machen können (im Gegensatz zu Ihrem öffentlichen Schlüssel).
Bfontaine
3

In meinem Fall hatte ich eine Gruppe, die Zugriff hatte, und der Benutzer war nicht Teil davon. Das hat es für mich gelöst.

Verwenden Sie das obige Beispiel mit dem Benutzer jimund nehmen Sie an, dass Mitglied der Gruppe jimdie einzige Gruppe ist (geben Sie den groupsBefehl ein, während Sie angemeldet sind jim, um Gruppen zu finden, zu denen Sie gehören). In meiner /etc/ssh/sshd_configDatei hatte ich einen AllowGroups sshusersEintrag und musste ihn daher jimder sshusersGruppe hinzufügen . Im Folgenden wird beschrieben, wie dies erreicht wird:

usermod -a -G sshusers jim

Ersetzen Sie Ihre Gruppe und Ihren Benutzer entsprechend Ihrer Konfiguration.

Joshua Fricke
quelle
1
Sie sollten Ihre Antwort verbessern, indem Sie auf eine Quelle verweisen, die Ihr Beispiel besser erklärt, oder indem Sie relevante Informationen hinzufügen, die Ihr Beispiel auf der ursprünglichen Frage von OP basieren. Beispiel: Der Benutzer, der jimals Dummy-Benutzer angegeben wurde, um den Kontext bereitzustellen. Der Artikel hier erklärt es gut.
0

In einigen Fällen PasswordAuthenticationist das standardmäßig deaktiviert.

Bitte überprüfen Sie /etc/ssh/sshd_config, ob das PasswordAuthenticationAttribut auf gesetzt ist yes.

Aldee
quelle
0

@Lekensteyn Ich kann keinen Kommentar zur Beantwortung der Frage hinterlassen, da ich nicht den Ruf habe - aber ich habe versucht, sie anzuhängen

AllowUsers existingUser,newUser

zu meiner / etc / ssh / sshd_config Datei und jetzt kann ich nicht mehr mit meinem existierenden Benutzer oder dem neuen Benutzer sshen.

ptjetty
quelle
Ich verstehe deinen Schmerz: DI hatte das gleiche Problem einmal. Lösung: AllowUsers existingUser@* newUser@*
İsmail Atkurt