Exemple de clés autorisées par SSH Utilisation

Exemple de clés autorisées par SSH Utilisation

SSH (Secure Shell) est un protocole utilisé pour les systèmes d'accès à distance et en toute sécurité (cryptés). Le serveur SSH s'exécute sur la machine distante et le client SSH sur votre machine de travail. La communication entre le client et le serveur est typique via la ligne de commande. Maintenant, il existe plusieurs façons d'authentifier la connexion - l'authentification du mot de passe, l'authentification publique / privée basée sur la clé (en utilisant le fichier Authorized_key) et l'authentification basée sur l'hôte (en utilisant le fichier connu_host).

  1. Dans la méthode d'authentification basée sur le mot de passe, un mot de passe est nécessaire pour se connecter. Les mots de passe peuvent être longs et fastidieux à retenir; Cependant, pire même, ils peuvent être brutés (piratés)! Les scripts Python simples peuvent brute for même le pire des mots de passe, et en tant que tels, ils présentent un risque de sécurité.
  2. Dans l'authentification publique / privée basée sur la clé, aucun mot de passe n'est requis pour se connecter (une connexion sans mot de passe). En fait, l'authentification basée sur les clés est plus sûre que l'authentification du mot de passe car il n'est pas nécessaire de taper un mot de passe. Dans de telles circonstances, le serveur vérifie simplement que vous avez une clé privée! Cette clé privée est un fichier et peut donc être copiée (risque de sécurité); Cependant, il est beaucoup plus fort et plus long qu'un mot de passe à 8 caractères. De plus, le fichier Authorized_keys est utilisé pour authentifier les utilisateurs par le serveur.
  3. Dans la méthode d'authentification basée sur l'hôte connu, le fichier hôte connu contient les hôtes autorisés à se connecter. Le fichier connu_hosts est utilisé pour authentifier les serveurs par les utilisateurs.

Dans ce didacticiel, nous examinerons comment configurer l'authentification publique / privée basée sur la clé et jeter un œil au fichier autorisé_keys et à ses utilisations.

Configuration de l'authentification basée sur les clés

Lors de la configuration de systèmes complexes comme ceux-ci, nous devons nous assurer que les fichiers de configuration sont configurés de manière appropriée! S'ils ne le sont pas, l'ensemble du processus ne fonctionnera pas! Maintenant, il y a deux systèmes ici - le client et le serveur. Le / etc / ssh / sshd_config Sur le serveur sur le serveur, faites-les et configurez-les comme suit:

Permutrootlogin oui
PasswordAuthentication Oui
ChallengeResponSeutinghentification non

Ensuite, nous devons être des clés publiques et privées au genre. Pour générer les clés, exécutez (sur la machine client):

ssh-keygen

Lorsque vous exécutez SSH-Keygen, vous serez invité avec quelques questions. La première question sera l'endroit où vous souhaitez enregistrer les clés. Si vous quittez ce blanc, il l'enregistrera dans le dossier par défaut. Dans mon cas, c'est le / home / client /.ssh / id_rsa, où id_rsa est la clé privée réelle, et le .SSH est le dossier. Ensuite, vous serez invité à entrer dans une phrase secrète. Vous n'avez pas à entrer dans une phrase secrète, mais cela ajoute une autre couche de sécurité. La phrase de passe est utilisée pour crypter la clé privée.

Cela créera une clé publique et une clé privée.

~ /.ssh / id_rsa (clé privée)
~ /.ssh / id_rsa.pub (clé publique)

Le point ssh signifie qu'il s'agit d'un dossier caché par défaut. De plus, la clé publique est utilisée pour le cryptage, tandis que la clé privée est utilisée pour le déchiffrement. Et bien que la clé publique puisse être bandée partout et partout, la clé privée doit être maintenue en sécurité! Votre clé privée doit rester dans votre réseau à tout moment! Si vous perdez votre clé privée, vous pourriez aussi bien supposer que votre système a été compromis. C'est pire que de perdre votre mot de passe car c'est une connexion sans mot de passe).

Ensuite, nous devons copier la clé publique sur le serveur, et pour cela, nous utilisons le code suivant (qui est exécuté sur la machine client):

ssh-copy-id

Par exemple, dans mon cas, j'écrirais:

Ex: SSH-Copy-ID Server @ 10.0.2.15

Ssh-copy-id est telle que nom du serveur est le nom du serveur, et IP est son adresse IP. Dans ce cas, "serveur«Est le nom de mon serveur, et dix.0.2.15 est son adresse IP. Lorsque le code précédent est entré dans la machine client, le client invitera le mot de passe du serveur, saisissez-le. Il copiera la clé publique sur le serveur à ~ /.SSH / AUTORISED_KEYS et par la suite Afficher le nombre de touches ajoutées: « sur votre machine client.

La machine client vous demandera également de tenter une connexion en utilisant:

ssh
(Ex: SSH Server @ 10.0.2.15)

La seconde où la clé publique est copiée sur le serveur, un fichier appelé Autorized_keys sera créé avec la clé publique à l'intérieur. Comme vous pouvez le voir sur les photos suivantes, voici un dossier caché appelé /.SSH a gagné mon serveur; Lorsque le fichier Authorized_keys est ouvert, vous pouvez voir la clé publique que nous avons générée à l'intérieur.

Bien que ce processus semble être assez simple, vous pouvez et vous rencontrerez probablement un certain nombre d'erreurs tout en configurant le processus d'authentification basé sur les clés. L'un, en particulier, est le suivant:

Erreur "Agent admis avoir signé en utilisant la clé. Permission refusée. (Clé publique"

Vous pourriez obtenir cette erreur après avoir copié la clé publique Fichier autorisé_keys. Utilisez le code suivant sur la machine client pour le corriger:

SSH-ADD

Une fois que tout a été configuré, vous devez maintenant désactiver l'authentification du mot de passe sur votre machine de serveur. Cela se fait en entrant dans le / etc / ssh / sshd_config fichier sur votre serveur et définir le PasswordAuthentication à non:

PasswordAuthentication Non

Une fois que vous avez défini l'authentification du mot de passe sur non, si vous essayez de vous connecter via SSH, vous devez être automatiquement connecté. (Veuillez noter que je n'ai pas réglé de phrase secrète.)

Fichier autorisé_keys

Quel que soit le type de clé que vous utilisez (Ex: RSA, ECDSA, etc.), pour utiliser l'authentification basée sur la clé, la clé publique générée doit être copiée sur le serveur Fichier autorisé_keys. En règle générale, si ce fichier n'existe pas, le serveur tentera l'authentification du mot de passe. N'oubliez pas également que chaque clé publique est stockée en une seule ligne dans le Fichier autorisé_keys. N'oubliez pas également de donner le / /.dossier ssh, les clés privées / publiques, et le Fichier autorisé_keys Les autorisations appropriées - vous et vous seuls devriez être en mesure de jouer avec. Notez que vous pouvez copier la clé publique manuellement dans le / /.dossier ssh De plus, et si cela est fait manuellement, les autorisations appropriées sont une partie importante du processus.

Dans le cas où vous ajoutez une deuxième clé publique manuellement Fichier autorisé_keys, terminer la ligne avec un «Newlin»Ou un retour. Si vous ne le faites pas, il pensera que les deux clés distinctes sont une seule clé, et aucun ne fonctionnera.

Le / /.répertoire SSH devrait avoir l'autorisation suivante:

Chmod 700 ~ /.ssh

Le Fichier autorisé_keys devrait avoir l'autorisation suivante:

Chmod 600 ~ /.SSH / AUTORISED_KEYS

Le Clé publique devrait avoir l'autorisation suivante:

Chmod 644 ~ /.ssh / id_rsa.pub

La clé privée doit avoir l'autorisation suivante:

Chmod 600 ~ /.ssh / id_rsa

Vous pouvez également accorder à d'autres utilisateurs un accès à votre serveur. Pour cela, vous obtenez simplement leur clé publique et la placez dans le Fichier autorisé_keys (dans une nouvelle ligne). Ce dernier leur accordera l'accès à votre serveur.

En règle générale, lorsque l'authentification basée sur les clés est configurée, l'utilisateur peut accéder à la machine distante avec des commandes entièrement fonctionnelles. Cependant, vous pouvez restreindre l'accès à une seule commande que vous souhaitez en utilisant le Fichier autorisé_keys. C'est appelé "commandement forcé".

Ceci est le format du Fichier autorisé_keys Si vous souhaitez forcer une commande:


Ex:
Command = ”Date” ssh-rsa aasasa […]

Dans mon exemple, j'ai placé la commande «Date» devant la clé publique dans le fichier Authorized_keys (voir dans l'image ci-dessous). Le résultat de cette commande ajoutée au fichier autorisé_keys est que je n'obtiens que la date sur ma machine client. La commande que vous avez spécifiée, et seule cette commande sera ensuite exécutée ou autorisée.


L'inconvénient de la commande forcée dans le Fichier autorisé_keys Est-ce que vous ne pouvez généralement pas mettre une seule commande par clé publique autorisée. Pour contourner cela, vous aurez besoin d'un script bash. Si vous avez affaire à un script bash, vous utiliserez la notation suivante:

commande =

Supposons que j'écris un script appelé ssh_script.shot (Ceci est juste un exemple de script):

#!/ bac / bash
Ps3 = 'Choisissez votre option:'
Choices = ("Get the Date" "Faire un répertoire" "Faire un fichier" "Exit")
Sélectionnez Opt dans "$ choix [@]"; faire
Case $ opt dans
"Obtenez la date")
CurrentDate = 'Date + "% y-% m-% d% t"'
echo $ currentDate
;;
"Faire un répertoire")
Echo "Quel est le nom du répertoire?"
Lire Namedir
Mkdir $ NAMBLADIR
;;
"Faire un fichier")
Echo "Entrez le texte que vous souhaitez placer dans le fichier"
lire du texte
Echo "Nom du fichier s'il vous plaît"
Lire le nom de fichier
echo $ text >> $ nom de fichier
casser
;;
"sortie")
Echo "Aper au revoir! On se reverra bientôt!"
sortie
;;
*) Echo "Option non valide $ Répondre" ;;
ESAC
fait

L'étape suivante consiste à rendre ce fichier exécutable en tapant ce qui suit:

chmod + x ssh_script.shot

Veuillez noter que si vous ne faites pas ce fichier exécutable, le processus lancera une erreur! Ici, vous placerait le fichier que vous venez de créer ~ /.ssh comme ~ /.ssh / ssh_script.shot, et écrivez ce qui suit dans le Fichier autorisé_key:

Ex:
Command = ”/ Home / Server /.ssh / ssh_script.sh ”ssh-rsa aasasa […]

Le résultat est le suivant:

Quand le ssh_script.Fichier SH (exécutable) est placé dans le ~ /.dossier ssh (~ /.ssh / ssh_script.sh), Et que le Fichier autorisé_keys est modifié, vous devriez voir les résultats du script bash sur la machine client (comme dans l'image ci-dessus). Et c'est tout! Code facile, venteux, beau!

Authentification par clé est un moyen facile, rapide et sûr de se connecter à votre machine distante en utilisant ssh. En particulier, le Fichier autorisé_keys est très utile pour authentifier l'utilisateur et spécifier quelles commandes sont autorisées par l'utilisateur.

Codage heureux!