Créer un nouvel utilisateur SSH sur Ubuntu Server

104

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-le jimpour le reste). Je veux qu'ils aient un /home/répertoire.
  • Donner un jimaccès SSH.
  • Autoriser jimà surooter mais ne pas effectuer d' sudoopérations.
  • 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?

Oli
la source
Salut! Je peux vous aider dans les serveurs, je ne sais pas quel est votre problème avec SSH, car pour moi avec la configuration par défaut, je ne refuse jamais ma connexion. Vous pouvez voir man nologin , cela écrit, que si / etc / nologin existe, vous pouvez vous connecter avec root uniquement. Essayez de vous connecter normalement, puis écrivez les résultats.
antivirtel
Quel est le shell de l'utilisateur? Est-ce / bin / bash? Vérifiez cela dans / etc / password. Assurez-vous que ce n'est pas / dev / null ou / bin / false.
LFC_fan
Oui, LFC_fan ou / etc / nologin aussi. Utilisez (sudo) cat / etc / passwd | grep jim
antivirtel
1
@B. Roland J'ai un /etc/nologinfichier mais il est vide. Je l'ai supprimé et redémarré ssh, mais il ne répond que Permission denied, please try again.lorsque j'essaie de me connecter.
Oli
@LFC_fan c'est / bin / bash
Oli

Réponses:

99

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

Port 1234
PermitRootLogin no
AllowUsers jim

Port 1234SSH é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 non fiable ne peut pas intercepter la connexion.

PermitRootLogin interdit la connexion directe à la racine.

AllowUsers jimpermet à l'utilisateur jimde 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 ne /etc/ssh/sshd_configsont pas appliquées immédiatement. Pour recharger la configuration, exécutez:

sudo service ssh reload
Lekensteyn
la source
10
+1: Remarque: ces instructions sont toujours applicables aux versions les plus récentes d’Ubuntu (par exemple 13.04). rootToutefois, si vous souhaitez vous connecter (vous configurez peut-être toujours le serveur), vous devez définir PermitRootLoginsur yeset ajouter rootdes éléments AllowUsers.
JRG-Developer
4
quel est le mot de passe pour cet utilisateur?
Wolfpack'08
Mon VPS est fourni avec un mot de passe root pour la connexion SSH sur le port 22. Ajouter la réponse à sshd_config empêche la connexion de root. Est-ce parce que j'ai également utilisé le port 22 pour jim ou existe-t-il une autre raison?
Wolfpack'08
1
@Lekensteyn J'ai découvert que l'ajout d'un nouvel utilisateur à Ubuntu lui-même crée un compte SSH pour cet utilisateur .... useradd -m -G sudo,adm -s /bin/bash mecharoketpasswd mecharok
Wolfpack'08 le
3
@ Wolfpack'08 Permet AllowUsers username1,username2de limiter les connexions SSH à ces utilisateurs. Assurez-vous qu'il sshdest rechargé. Si cela ne vous aide pas, veuillez créer une nouvelle question.
Lekensteyn
97

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 n'est PAS nécessaire d'ajouter l'utilisateur à / etc / ssh / ssh_config.

dh1tw
la source
2
Mon problème était chown, j'ai créé en ~./sshtant que root et je n'ai jamais donné la propriété à l'utilisateur.
Gerve
1
Mon problème était que j'essayais d'utiliser /root/.ssh/authorized_keysau lieu de /home/bob/.ssh/authorized_keys.
Alex W
Je peux confirmer: sur notre hébergement VPS, il n’était pas nécessaire de le modifier ssh_config. Configurer ce répertoire et ce fichier était suffisant.
superjos
2
Pour moi, ce devait être chmod 755 /home/username/.ssh sinon cela ne fonctionnerait pas.
Jim W
Il est beaucoup plus facile de vous connecter en tant qu'utilisateur (ou sudo su --login {user}) et de l'exécuter ssh-keygen-> Le dossier ".ssh", la clé + le cert et les autorisations sont terminés. Il suffit de créer allowed_keys selon vos instructions.
bshea
13

Il y aura des indices sur la /var/log/auth.lograison pour laquelle SSH (ou PAM) refuse la tentative de connexion. Des indices supplémentaires peuvent être trouvés en utilisant l' -voption 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 de vérifier le contenu de /etc/shadow).
  • /etc/ssh/sshd_configest configuré pour interdire la connexion ( DenyUsers, AllowUsers, PasswordAuthentication, PubkeyAuthentication, UsePAMetc., voir man sshd_config).
  • le shell de l'utilisateur n'est pas répertorié dans /etc/shells.
  • divers problèmes d'autorisation sur les répertoires ou les fichiers liés à l' exploitation 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 divers paramètres de compte par défaut.

Tant que l'utilisateur ne fait pas partie du admingroupe, il ne sera pas en mesure de se connecter à la racine. Pour eux d'utiliser su , vous devez définir un mot de passe root ( passwd root), après quoi je recommande cadre PermitRootLogin=nodans /etc/ssh/sshd_config.

Kees Cook
la source
Merci beaucoup pour cette excellente réponse - spécialement "adduser" a beaucoup aidé!
vishal.biyani
11

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

Matt Mootz
la source
Il s’agit d’un serveur virtuel (VPS), donc SSH est installé par défaut. C'est ma seule interface avec le serveur. Et vous pouvez recharger la configuration via sudo /etc/init.d/ssh reload, mais une bonne information quand même.
Oli
8

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 en passwd jimtant que root vous invitera à entrer 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.

Tok
la source
"Si cette commande renvoie un caractère"! ", La connexion est désactivée pour ce compte" Notez que cela ne signifie pas que vous ne pouvez pas utiliser SSH; seulement que vous ne pouvez pas le faire avec un mot de passe (vs avec votre clé publique).
bfontaine
3

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.

En utilisant l'exemple ci-dessus avec l'utilisateur jimet supposez que le membre du groupe jimest un groupe ( groupscommande d' émission tout en étant connecté jimafin de rechercher les groupes dont vous faites partie). Dans mon /etc/ssh/sshd_configdossier, j'avais une AllowGroups sshusersentrée et devais donc ajouter jimau sshusersgroupe. Voici comment cela serait accompli:

usermod -a -G sshusers jim

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

Joshua Fricke
la source
1
vous devriez améliorer votre réponse en vous référant à une source qui explique mieux votre exemple ou en ajoutant des informations pertinentes en vous basant sur la question initiale de OP. Par exemple, l'utilisateur spécifié en jimtant qu'utilisateur factice pour aider à fournir un contexte. l'article ici l' explique bien.
0

Il est possible que certaines situations PasswordAuthenticationsoient désactivées par défaut.

Veuillez vérifier /etc/ssh/sshd_configet assurez-vous que l' PasswordAuthenticationattribut est défini sur yes.

Aldee
la source
0

@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.

ptjetty
la source
Je comprends votre douleur: DI a eu le même problème une fois. Solution: AllowUsers existingUser@* newUser@*
İsmail Atkurt