Créer un nouvel utilisateur SSH sur le serveur Ubuntu

81

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-les jim pour le reste). Je veux qu'ils aient un répertoire /home/ .
  • Donne l’accès jim SSH.
  • Autoriser jim à su à effectuer une opération root mais pas à effectuer les opérations sudo .
  • Désactiver l’accès SSH root.
  • Déplacez SSHd vers un port non standard pour arrêter les attaques brutes.

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

    
posée Oli 08.12.2010 - 17:01
la source

7 réponses

83

Modifier (en tant que root) /etc/ssh/sshd_config . Ajoutez les éléments suivants:

Port 1234
PermitRootLogin no
AllowUsers jim

Port 1234 provoque l'écoute de SSH 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 peut pas intercepter la connexion.

PermitRootLogin n'autorise pas la connexion directe à la racine.

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

AllowUsers [email protected]

Les modifications apportées au fichier de configuration /etc/ssh/sshd_config ne sont pas appliquées immédiatement, pour recharger la configuration, exécutez:

sudo service ssh reload
    
réponse donnée Lekensteyn 08.12.2010 - 18:57
la source
60

SSH est très exigeant en ce qui concerne les autorisations de répertoire et de fichier. Assurez-vous que:

  1. Le répertoire /home/nomdutilisateur/.ssh a l'autorisation "700" et appartient à l'utilisateur (pas root!)
  2. Le / home / username / ssh / authorized_keys a l'autorisation "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 besoin d'ajouter l'utilisateur à / etc / ssh / ssh_config.

    
réponse donnée user2292376 01.03.2014 - 18:32
la source
10

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

  • le compte utilisateur n’a pas de mot de passe ou est désactivé (voir man passwd , essayez de réinitialiser le mot de passe ou de vérifier le contenu de /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 répertorié dans /etc/shells .
  • divers problèmes de permissions sur les répertoires ou les fichiers liés au fonctionnement de SSH: /etc/ssh , /home/jim/.ssh , /home/jim/.ssh/* , etc.

Je vous recommande également d'utiliser adduser (au lieu de useradd ) pour ajouter de nouveaux utilisateurs; il est un peu plus convivial sur les différents paramètres de compte par défaut.

Tant que l'utilisateur ne fait pas partie du groupe admin , il ne sera pas possible de sudo pour rooter. Pour qu'ils utilisent su , vous devez définir un mot de passe root ( passwd root ), après quoi je vous recommande de définir PermitRootLogin=no en /etc/ssh/sshd_config .

    
réponse donnée Kees Cook 11.12.2010 - 08:15
la source
10

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 ce n'est que le client

cette commande installe le serveur

sudo apt-get install openssh-server

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

/etc/ssh/sshd_config

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

sudo service ssh restart

    
réponse donnée Matt Mootz 08.12.2010 - 17:48
la source
7

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

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

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

Veillez également à vérifier que jim possède un shell de connexion, défini par défaut, et un répertoire personnel existant.

Veuillez noter la publication de lekensteyn pour des informations sur la modification des paramètres du serveur SSH.

    
réponse donnée Tok 08.12.2010 - 19:24
la source
2

Dans mon cas, je disposais d’un groupe auquel l’accès était autorisé et l’utilisateur n’y participait pas. Cela l'a résolu pour moi.

Utilisation de l'exemple ci-dessus avec l'utilisateur jim et le membre du groupe jim comme seul groupe (commande groups lors de la connexion à jim pour rechercher les groupes dont vous faites partie). Dans mon fichier /etc/ssh/sshd_config , j'avais AllowGroups sshusers entry et il fallait donc ajouter jim au groupe sshusers . Voici comment cela se fera:

usermod -a -G sshusers jim

Remplacez votre groupe et votre utilisateur en fonction de votre configuration.

    
réponse donnée Joshua Fricke 13.02.2018 - 01:22
la source
0

Il peut y avoir des cas où le PasswordAuthentication est désactivé par défaut.

Veuillez vérifier /etc/ssh/sshd_config et vous assurer que l’attribut PasswordAuthentication est défini sur yes .

    
réponse donnée Aldee 24.08.2017 - 17:05
la source

Lire d'autres questions sur les étiquettes