134 votes

Créer un nouvel utilisateur SSH sur le serveur Ubuntu

Je viens de créer un nouveau serveur virtuel Ubuntu et je suis en train de le durcir pour une utilisation en production. J'ai actuellement un compte root. Je veux faire ce qui suit :

  • Créez un nouvel utilisateur (appelons-le jim pour le reste). Je veux qu'ils aient /home/ répertoire.
  • Donnez jim Accès SSH.
  • Autoriser jim a su de s'enraciner mais pas de performer sudo opérations.
  • Désactiver l'accès SSH de la racine.
  • Déplacer SSHd vers un port non standard pour aider à arrêter les attaques brutes.

Mon problème réside dans les deux premiers points. J'ai déjà trouvé useradd mais pour une raison quelconque, je ne peux pas me connecter en tant qu'utilisateur créé avec lui par SSH. Dois-je battre SSHd pour permettre cela ?

128voto

dh1tw Points 1401

SSH est très pointilleux sur les permissions des répertoires et des fichiers. Assurez-vous que :

  1. Le répertoire /home/username/.ssh a la permission "700" et appartient à l'utilisateur (pas à root !)
  2. Le répertoire /home/username/ssh/authorized_keys a la permission "600" et appartient à l'utilisateur

Copiez votre clé publique dans le fichier authorized_keys.

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

Il y a NON devez ajouter l'utilisateur à /etc/ssh/ssh_config.

108voto

Lekensteyn Points 162346

Editer (en tant que root) /etc/ssh/sshd_config . Ajoutez-y le texte suivant :

Port 1234
PermitRootLogin no
AllowUsers jim

Port 1234 fait en sorte que SSH écoute sur le port 1234. Vous pouvez utiliser n'importe quel port inutilisé de 1 à 65535. Il est recommandé de choisir un port privilégié (port 1-1024) qui ne peut être utilisé que par root. Si votre démon SSH cesse de fonctionner pour une raison quelconque, une application malveillante ne pourra pas intercepter la connexion.

PermitRootLogin interdit l'accès direct à la racine.

AllowUsers jim permet à l'utilisateur jim pour se connecter via SSH. Si vous n'avez pas besoin de vous connecter de partout, vous pouvez rendre cela plus sûr en limitant jim à une adresse IP (remplacez 1.2.3.4 par votre adresse IP réelle) :

AllowUsers jim@1.2.3.4

Modifications du fichier de configuration /etc/ssh/sshd_config ne sont pas immédiatement appliquées, pour recharger la configuration, exécutez :

sudo service ssh reload

13voto

Brian Childress Points 437

Il y aura des indices dans /var/log/auth.log pour expliquer pourquoi SSH (ou PAM) rejette la tentative de connexion. Des indices supplémentaires peuvent être trouvés en utilisant la commande -v avec l'option ssh client. Plusieurs situations courantes, certaines mentionnées dans les autres réponses :

  • le compte d'utilisateur n'a pas de mot de passe, ou est autrement désactivé (voir man passwd essayez de réinitialiser le mot de passe ou de vérifier le contenu du dossier de l'utilisateur. /etc/shadow ).
  • /etc/ssh/sshd_config est configuré pour interdire la connexion ( DenyUsers , AllowUsers , PasswordAuthentication , PubkeyAuthentication , UsePAM etc., voir man sshd_config ).
  • le Shell de l'utilisateur n'est pas listé dans /etc/shells .
  • divers problèmes de permission sur les répertoires ou les fichiers liés à l'opération SSH : /etc/ssh , /home/jim/.ssh , /home/jim/.ssh/* etc.

Je recommande également d'utiliser adduser (au lieu de useradd ) pour l'ajout de nouveaux utilisateurs ; il est un peu plus convivial en ce qui concerne les divers paramètres de compte par défaut.

Tant que l'utilisateur ne fait pas partie de l'équipe de la admin groupe, ils ne seront pas en mesure de sudo pour s'enraciner. Pour qu'ils utilisent su vous devrez définir un mot de passe root ( passwd root ), après quoi je recommande de définir PermitRootLogin=no en /etc/ssh/sshd_config .

11voto

PhillC Points 101

Je peux me tromper, mais je dois toujours installer le démon du serveur avant de pouvoir me connecter (au moins sur le bureau). ssh est installé par défaut, mais il ne s'agit que du client.

cette commande installe le serveur

sudo apt-get install openssh-server

Vous pouvez changer le port et arrêter la connexion de root en éditant

/etc/ssh/sshd_config

Cela nécessite cependant de redémarrer le service.

sudo service ssh restart

10voto

Mathew Hall Points 1066

Jim n'aura pas d'accès SSH tant que vous n'aurez pas défini un mot de passe. En tant que root, exécutez :

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

Si cette commande renvoie un caractère " !", la connexion est désactivée pour ce compte. Exécution de passwd jim en tant que root vous demandera une nouvelle chaîne de mots de passe confirmée, après quoi la commande grep ci-dessus devrait retourner une chaîne hachée représentant le mot de passe de jim.

Veillez également à vérifier que jim a un login Shell, défini par défaut, et un répertoire personnel qui existe.

Veuillez consulter le post de lekensteyn pour obtenir des informations sur la modification des paramètres du serveur SSH.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X