Comment configurer un accès SSH sans mot de passe pour l'utilisateur root [dupliquer]

38

Je dois configurer une machine pour que l’installation du logiciel puisse être automatisée à distance via SSH. Après le wiki , j'ai pu configurer des clés SSH pour que mon utilisateur puisse accéder à la machine sans mot de passe, mais je dois toujours entrer manuellement mon mot de passe lorsque j'utilise sudo , ce que, évidemment, un processus automatisé ne devrait pas avoir à faire.

Bien que mon /etc/ssh/sshd_config ait PermitRootLogin yes , je ne peux pas sembler être capable de me connecter en tant que root, probablement parce que ce n'est pas un "vrai" compte avec un mot de passe séparé.

Comment puis-je configurer les clés SSH afin qu'un processus puisse se connecter à distance en tant que root sur Ubuntu?

    
posée Cerin 22.03.2012 - 18:01
la source

4 réponses

46

EDIT bodhi.zazen Cette réponse a posé de sérieux problèmes et je tente de réécrire la réponse pour résoudre les problèmes liés à la réponse originale.

Partie 1: clé SSH sans mot de passe

Pour configurer une connexion SSH sans mot de passe pour l'utilisateur root, vous devez disposer d'un accès root sur le serveur. La méthode la plus simple consiste à temporairement autoriser root à se connecter via ssh via un mot de passe. D'une manière ou d'une autre, vous avez besoin d'un accès root sur le serveur pour ce faire. Si vous ne disposez pas d'un accès root sur le serveur, contactez l'administrateur du serveur pour obtenir de l'aide.

--- Sur le client, c'est-à-dire où vous ssh FROM ---

Commencez par créer une clé ssh sans mot de passe. Je vous suggère fortement de lui donner un nom plutôt que d'utiliser la valeur par défaut

ssh-keygen -f foo

L’option -f spécifie un nom de fichier, foo en est un exemple, utilisez le nom de votre choix.

Lorsque vous êtes invité à entrer un mot de passe, appuyez simplement sur la touche Entrée pour générer une clé sans mot de passe.

Ensuite, vous devez transférer la clé sur le serveur. La méthode la plus simple consiste à utiliser ssh-copy-id . Pour ce faire, vous devez temporairement autoriser root à ssh sur le serveur.

--- SUR LE SERVEUR où vous ssh vers ---

SUR LE SERVEUR, éditez /etc/ssh/sshd_config

sudo nano /etc/ssh/sshd_config

Assurez-vous d’autoriser root à se connecter avec la syntaxe suivante

PasswordAuthentication yes
PermitRootLogin yes

Redémarrer le serveur

sudo service ssh restart

Définissez un mot de passe root, utilisez un mot de passe fort

sudo passwd

--- Fait sur le serveur ---

Depuis le client, transférez la clé sur le serveur

ssh-copy-id -i ~/.ssh/foo [email protected]

modifiez "foo" le nom de votre clé et entrez votre mot de passe root lorsque vous y êtes invité.

Testez la clé

ssh -i ~/.ssh/foo [email protected]

En supposant que cela fonctionne, désélectionnez un mot de passe root et désactivez la connexion par mot de passe.

--- SUR LE SERVEUR ---

sudo passwd -l root

Modifier /etc/ssh/sshd_config

sudo nano '/etc/ssh/sshd_config'

Modifier les éléments suivants:

PasswordAuthentication no
PermitRootLogin without-password

Redémarrer le serveur

sudo service ssh restart

--- FAIT SUR SERVER ---

Test, vous devriez maintenant être capable de ssh avec votre clé sans mot de passe et vous ne devriez pas pouvoir entrer en ssh comme n'importe quel utilisateur sans clé.

Du client

ssh -i ~/.ssh/foo [email protected]

Partie 2 Exécuter des commandes via sudo sans saisir de mot de passe

Vous configurez sudo pour vous permettre d’exécuter des commandes sans mot de passe.

Ceci est répondu ici à deux endroits:

Comment exécuter des commandes sudo spécifiques sans mot de passe?

Comment exécuter la commande sudo sans mot de passe?

Sur les deux, je suggère d’autoriser le moins de commandes possible (première réponse) plutôt que toutes les commandes (deuxième réponse).

    
réponse donnée bodhi.zazen 18.10.2017 - 17:34
la source
8

Vous confondez deux choses différentes:

Le journal sans mot de passe

permet de s’assurer que les utilisateurs ne peuvent pas se connecter à distance à votre système en devinant votre mot de passe. Si vous pouvez utiliser ssh username @ machine et vous connecter sans mot de passe, cela est configuré correctement et n'a rien d'autre à voir avec cela.

sudo est utilisé pour permettre à un compte d'utilisateur normal de faire quelque chose avec des autorisations de super utilisateur. Cela ne oblige l'utilisateur à saisir son mot de passe. Cela se produit que vous soyez connecté à distance (via SSH sans mot de passe ou protégé par mot de passe) ou local sur la machine. Vous essayez de définir sudo pour ne pas demander votre mot de passe, ce qui n'est pas recommandé, mais vous pouvez apprendre à le faire via une réponse comme lien

Note aux futurs lecteurs de cette réponse:

Ma réponse ci-dessus ne répond pas à la question réelle de l'affiche originale, elle décrit ce que vous devez faire à la place. Si vous vraiment souhaitez autoriser les connexions distantes directement au compte root, vous devez activer le compte root (voir mon commentaire ci-dessous). Encore une fois, permettez-moi de dire NE PAS autoriser les connexions distantes à distance à votre compte root.

    
réponse donnée David Oneill 22.03.2012 - 18:09
la source
2

PermitRootLogin contrôle si l'utilisateur nommé "root" (pour être précis: tout utilisateur avec UID 0) est autorisé à se connecter. Si vous vous connectez en tant que root, vous n'avez pas besoin de sudo pour effectuer des tâches privilégiées.

D'autre part, si vous vous connectez sur un compte d'utilisateur et utilisez sudo sans mot de passe, vous devez configurer le fichier sudoers sans avoir à manipuler /etc/ssh/sshd_config . Voir Comment faire pour que Ubuntu se souvienne à jamais du mot de passe après la première fois

    
réponse donnée Lekensteyn 22.03.2012 - 18:10
la source
2

Q. Connectez-vous à l'hôte distant en tant qu'utilisateur root avec SSH sans mot de passe (par exemple, ssh root @ remotehost_ip)

A. Pour vous connecter à l’hôte distant en tant qu’utilisateur root à l’aide de SSH sans mot de passe, suivez les étapes ci-dessous.

1ère étape:
Vous devez d'abord partager la clé publique de l'utilisateur local avec le fichier authorized_keys de l'utilisateur racine de l'hôte distant. Il y a plusieurs façons de le faire, voici un exemple.

lien

Ou vous pouvez simplement copier coller le contenu de votre clé publique dans le fichier authorized_keys de l'utilisateur racine de l'hôte distant.

2ème étape:
Configurez ssh pour permettre une connexion sans mot de passe sur l'hôte distant. Connectez-vous à l'hôte distant et éditez le fichier / etc / ssh / sshd_config, puis redémarrez le service ssh. N'oubliez pas de commenter "PermitRootLogin yes".

#vim /etc/ssh/sshd_config
PermitRootLogin without-password
StrictModes no

#service ssh restart

Commenter #PermitRootLogin yes

3ème étape:
Testez votre connexion à partir de votre ordinateur local en utilisant un utilisateur dont la clé publique est partagée plus tôt.

$ssh [email protected]_ip
    
réponse donnée Aanokpe Rai 01.06.2016 - 07:31
la source

Lire d'autres questions sur les étiquettes