Question 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 durcir pour une utilisation en production. J'ai actuellement un compte root. Je veux faire ce qui suit:

  • Créer un nouvel utilisateur (appelons-le jim pour le reste de ceci). Je veux qu'ils aient un /home/ annuaire.
  • Donner jim Accès SSH.
  • Permettre jim à su pour rooter mais pas effectuer sudo opérations.
  • Désactiver l'accès root SSH.
  • 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?


82
2017-12-08 16:01


origine


Salut! Je peux vous aider dans les serveurs, je ne sais pas quel est votre problème avec SSH, car pour moi, la configuration par défaut ne refuse jamais ma connexion. Vous pouvez voir homme 5 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
@B. Roland j'ai un /etc/nologin fichier mais c'est vide. Je l'ai supprimé et redémarré ssh mais il ne fait que répondre Permission denied, please try again. quand j'essaye de me connecter - Oli♦
@ LCF_fan c'est / bin / bash - Oli♦


Réponses:


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

Port 1234
PermitRootLogin no
AllowUsers jim

Port 1234 SSH écoute 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 root directe.

AllowUsers jim permet à l'utilisateur jim pour vous connecter via SSH. Si vous n'êtes pas obligé 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 jim@1.2.3.4

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

sudo service ssh reload

83
2017-12-08 17:57



+1: Remarque: ces instructions sont toujours applicables aux nouvelles versions d'Ubuntu (par exemple, 13.04). Si vous voulez root Connectez-vous, cependant (vous configurez peut-être encore le serveur), vous devez définir PermitRootLogin à yes et aussi ajouter root à AllowUsers. - JRG-Developer
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. Si vous ajoutez la réponse à sshd_config, root ne pourra pas se connecter. Est-ce parce que j'ai aussi utilisé le port 22 pour jim? - Wolfpack'08
@Lekensteyn J'ai trouvé que l'ajout d'un nouvel utilisateur à Ubuntu crée un compte ssh pour cet utilisateur .... useradd -m -G sudo,adm -s /bin/bash mecharok et passwd mecharok - Wolfpack'08
@ Wolfpack'08 Utilisation AllowUsers username1,username2 pour restreindre les connexions SSH à ces utilisateurs. Veiller à ce que sshd est rechargé. Si cela n'aide pas, veuillez créer une nouvelle question. - Lekensteyn


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

  1. Le répertoire /home/username/.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.


65
2018-03-01 17:32



Mon problème était chown, j'ai créé ~./ssh en tant que root et n'a jamais donné la propriété à l'utilisateur. - Gerve
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'y avait pas besoin de modifier ssh_config. Configurer ce répertoire et ce fichier suffisait. - superjos
C'est la bonne réponse et est évolutive! - Viet
Pour moi, ça devait être chmod 755 /home/username/.ssh sinon ça ne marcherait pas. - Jim W


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 le -v option avec le ssh client. 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 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 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 admin groupe, ils ne seront pas en mesure de sudo enraciner. Pour eux d'utiliser su, vous devrez définir un mot de passe root (passwd root), après quoi je recommande PermitRootLogin=no dans /etc/ssh/sshd_config.


10
2017-12-11 07:15



Merci beaucoup pour la bonne réponse - spécialement "adduser" a beaucoup aidé! - vishal.biyani


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 c'est juste le client

cette commande installe le serveur

sudo apt-get install openssh-server

Vous pouvez changer 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


10
2017-12-08 16:48



Ceci est 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 au lieu de cela, mais de bonnes informations néanmoins. - Oli♦


Jim n'aura pas accès à SSH avant d'avoir 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 puis login est désactivé pour ce compte. L'exécution passwd jim en tant que root vous demandera une nouvelle chaîne de mot de passe confirmée après laquelle 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 de base existant.

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


7
2017-12-08 18:24



"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 (par rapport à votre clé publique). - bfontaine


Dans mon cas, j'avais un groupe qui était autorisé à accéder et l'utilisateur ne faisait pas partie de ce groupe. Ceci l'a résolu pour moi.

En utilisant l'exemple ci-dessus avec l'utilisateur jim et assumer membre du groupe jim comme seul groupe (numéro groups commande en étant connecté en tant que jim pour trouver des groupes dont vous faites partie). Dans mon /etc/ssh/sshd_config fichier que j'avais AllowGroups sshusers entrée et donc nécessaire d'ajouter jim au sshusers groupe. Voici comment cela se ferait:

usermod -a -G sshusers jim

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


2
2018-02-13 00:22



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 originale d'OP. par exemple, l'utilisateur a spécifié jim en tant qu'utilisateur fictif pour aider à fournir un contexte. l'article ici explique bien. - jargonjunkie


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

Bien vouloir vérifier /etc/ssh/sshd_config et faire en sorte que le PasswordAuthentication attribut est défini sur yes.


0
2017-08-24 15:05