web-dev-qa-db-fra.com

Créer un nouvel utilisateur SSH sur Ubuntu Server

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

  • Créez un nouvel utilisateur (appelons-les jimpour le reste). Je veux qu’ils aient un répertoire /home/.
  • Donnez à jiml'accès SSH.
  • Autorisez jimà suà root mais n'effectuez pas d'opération Sudoname__.
  • Désactivez l'accès root SSH.
  • Déplacez SSHd sur un port non standard pour aider à arrêter les attaques brutales.

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

95
Oli

Modifier (en tant que root) /etc/ssh/sshd_config. Ajoutez ce qui suit:

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é compris entre 1 et 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 non fiable 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 ne devez pas 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
91
Lekensteyn

SSH est très pointilleux sur les permissions des répertoires et des fichiers. Sois sûr que:

  1. Le répertoire /home/username/.ssh a l'autorisation "700" et est la propriété de l'utilisateur (et non de la racine!)
  2. Le/home/nom d'utilisateur/ssh/registered_keys a l'autorisation "600" et est la propriété de l'utilisateur

Copiez votre clé publique dans le fichier allowed_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 NO besoin d'ajouter l'utilisateur à/etc/ssh/ssh_config.

86
dh1tw

/var/log/auth.log contiendra des indices expliquant pourquoi SSH (ou PAM) refuse la tentative de connexion. Des indices supplémentaires peuvent être trouvés en utilisant l'option -v avec le client ssh. Plusieurs situations courantes, dont 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 vérifiez 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 ne figure pas dans /etc/shells.
  • divers problèmes d'autorisation sur les répertoires ou les fichiers liés à l'opération SSH: /etc/ssh, /home/jim/.ssh, /home/jim/.ssh/*, etc.

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

Tant que l'utilisateur ne fait pas partie du groupe admin, il ne pourra pas Sudo accéder à la racine. Pour qu’ils puissent utiliser s, vous devez définir un mot de passe root (passwd root), après quoi je recommande de définir PermitRootLogin=no dans /etc/ssh/sshd_config.

11
Kees Cook

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 modifiant

/etc/ssh/sshd_config

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

Sudo service ssh restart

10
Matt Mootz

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

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

Si cette commande retourne un "!" caractère alors la connexion est désactivée 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 de jim.

Assurez-vous également que jim dispose d'un shell de connexion défini par défaut et d'un répertoire de base existant.

Veuillez noter le message de lekensteyn pour plus d'informations sur la modification des paramètres du serveur SSH.

7
Tok

Dans mon cas, j'avais un groupe auquel l'accès était autorisé et l'utilisateur n'en faisait pas partie. Cela a résolu le problème pour moi.

Utilisez l'exemple ci-dessus avec l'utilisateur jimet supposez que vous êtes membre du groupe jimen tant que groupe (émettez la commande groupsalors que vous êtes connecté en tant que jimpour rechercher les groupes auxquels vous appartenez). Dans mon fichier /etc/ssh/sshd_config, j'avais l'entrée AllowGroups sshusers et devais donc ajouter jimau groupe sshusersname__. Voici comment cela serait accompli:

usermod -a -G sshusers jim

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

3
Joshua Fricke

@Lekensteyn Je ne peux pas laisser de commentaire à la réponse à la question car je n'ai pas la réputation - mais j'ai essayé d'ajouter

AllowUsers existingUser,newUser

dans mon fichier/etc/ssh/sshd_config et je ne peux plus utiliser SSH avec mon utilisateur existant ou avec l’utilisateur newUser.

0
ptjetty

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

Veuillez vérifier /etc/ssh/sshd_config et vous assurer que l'attribut PasswordAuthenticationest défini sur yesname__.

0
Aldee