Comment stocker les informations d'identification SSH dans le terminal


33

Je suis nouveau sur le MacBook et j'utilise El Capitan.

Je migre l'utilisation de ma machine d'un PC vers un MacBook. J'utilise depuis longtemps PuTTY et SuperPuTTY sur un PC.

Je veux créer et enregistrer des informations de connexion sur mes serveurs Web dans MacBook Terminal, comme je l'ai fait dans SuperPuTTY sur le PC.

Est-il possible d'enregistrer les informations de connexion au serveur Web dans Mac Terminal?

Voici mon objectif global:

Je voudrais savoir s'il existe un moyen simple dans Mac Terminal de stocker les informations d'identification de connexion de ligne de commande suivantes, puis d'utiliser une sorte de shortcode pour se connecter à mon serveur Web via Terminal:

ssh -p 2200 root@123.456.789.012
Password: ****************************************************************

Je gère et me connecte à 5 serveurs Web différents, donc le tri et l'organisation des informations de connexion dans une méthode de connexion courte / rapide seraient un énorme gain de temps. Surtout parce que mes mots de passe sont des chaînes cryptées de 64 caractères.


J'ai purgé les commentaires pendant que la troisième édition de Tammy supprimait cela du parc en termes de clarté et d'utilité. Bien joué!
bmike

Réponses:


50

Vous pouvez copier votre clé publique sur les machines distantes. Tant que l'authentification par clé publique est activée et que votre clé publique est présente sur la machine distante, vous pouvez sshaccéder aux machines sans avoir à fournir de mot de passe.

Vous devez d'abord générer une paire de clés publique / privée comme ceci:

ssh-keygen -t rsa

Suivez les invites. Quand il vous demande si vous souhaitez protéger la clé avec une phrase secrète, dites OUI! C'est une mauvaise pratique de ne pas protéger vos clés par mot de passe et je vais vous montrer comment ne devoir saisir le mot de passe que de temps en temps.

Si vous avez déjà une paire de clés, vous pouvez ignorer l'étape ci-dessus.

Maintenant, en supposant que votre clé ssh existe sur votre Mac ~/.ssh/id_rsa.pub, vous pouvez l'installer sur une machine distante en exécutant:

cat ~/.ssh/id_rsa.pub | ssh user@123.45.56.78 "mkdir -p ~/.ssh && cat >>  ~/.ssh/authorized_keys"

Pour votre exemple de serveur spécifique cité ci-dessus, la commande ressemblerait à:

cat ~/.ssh/id_rsa.pub | ssh -p 2200 root@123.456.789.012 "mkdir -p ~/.ssh && cat >>  ~/.ssh/authorized_keys"

Vous devrez entrer le mot de passe pour root@123.456.789.012effectuer cette copie, mais ce devrait être la dernière fois que vous devez le faire. En supposant que le serveur distant sshdest configuré pour effectuer l'authentification par clé publique-privée, lorsque vous accédez à la boîte maintenant, il ne devrait pas vous demander de mot de passe pour le rootcompte - à la place, il vous demandera le mot de passe pour votre clé . Lisez la suite pour savoir comment faire de ce quelque chose que vous n'avez pas besoin d'entrer tout le temps.

Répétez ce qui précède pour chaque machine que vous souhaitez utiliser avec vos clés au lieu d'un mot de passe.

Veuillez noter que toute personne qui met la main sur votre ~/.ssh/id_rsafichier peut accéder à cette machine rootsans fournir de mot de passe pour la machine distante. Un mot de passe protégeant le fichier de clé garantit qu'ils auraient besoin de connaître le mot de passe pour que cette clé puisse l'utiliser. Assurez-vous que ce fichier est sécurisé. Utilisez le chiffrement du disque sur votre Mac et limitez les autorisations sur le fichier et le ~/.ssh/répertoire.

Pour faciliter l'utilisation de la clé sans avoir à saisir le mot de passe à chaque fois, OS X exécute un ssh-agentprocessus en arrière-plan sur votre machine. Cet agent mettra en cache la paire de clés la première fois que vous l'utiliserez, vous n'aurez donc qu'à saisir votre mot de passe de temps en temps. Si vous ne dormez que sur votre Mac, ne le redémarrez jamais, vous pouvez passer de longues périodes sans avoir à saisir votre mot de passe.

Vous pouvez pré-mettre en cache toutes vos clés SSH avec ssh-agenten exécutant:

ssh-add

Il ne vous reste plus qu'à vous souvenir du mot de passe de la clé , pas des nombreux mots de passe de compte différents. Je garde généralement mes mots de passe clés dans 1Password (sans affiliation), ce qui simplifie encore le nombre de mots de passe dont je dois me souvenir. Ensuite, je les recherche simplement dans 1Password et les coupe-colle dans le terminal le temps impair que je redémarre mon Mac et provoque le redémarrage de mon fonctionnement ssh-agent.

Si vous combinez la copie de votre clé sur des machines distantes avec la solution de gestion de connexion Terminal.app dans cette question , vous aurez quelque chose de très proche de PuTTY pour l'expérience de connexion GUI.


Côté serveur, vérifiez /etc/ssh/sshd_configet assurez-vous:

PubkeyAuthentication yes

est activé dans la configuration (c'est par défaut dans OpenSSH). Vous pouvez également définir:

PasswordAuthentication no

Pendant que vous y êtes, l'authentification par mot de passe est désactivée et les clés deviennent le seul moyen d'accéder à la machine.

Vous devrez redémarrer sshd sur la machine si vous apportez des modifications au fichier de configuration.


Merci @IamC - cette réponse est excellente et je suis sûr que cela fonctionnera. J'ai créé un compte d'échange de pile ici sur le canal Mac ce matin pour voir si je pouvais trouver un moyen rapide et facile d'enregistrer les informations de connexion dans Terminal ou sur le Mac d'une manière ou d'une autre. Il semble que cela soit extrêmement compliqué et pas une solution viable pour moi. Voici pourquoi: <more>
tammy

<suite.> J'ai accès en ligne de commande à un certain nombre de serveurs Web (5 en tout). J'ai un PC de bureau à mon bureau avec un accès SSH (via PuTTY) à ces serveurs Web. J'ai un grand ordinateur portable à mon bureau à domicile avec un accès SSH (via PuTTY) à ces serveurs Web. Je viens d'acheter un MacBook Air pour les voyages et les visites de clients sur place. Il est parfait pour ce besoin particulier. J'espérais rendre les connexions SSH aux serveurs aussi simples que via PuTTY et SuperPuTTY sur le PC. <more>
tammy

<suite.> Mais je ne peux pas suivre l'itinéraire de clé d'authentification publique, car je devrais changer la façon dont PuTTY fonctionne sur mon ordinateur personnel et professionnel. Il est devenu trop difficile de faire fonctionner le Mac comme mon PC, donc je pense que je devrai simplement m'en tenir au processus de copier-coller pour me connecter à partir de mon Mac. Merci de votre aide. J'apprécie grandement que vous m'aidiez à essayer de simplifier mon processus.
tammy

2
@tammy vous pouvez laisser PasswordAuthentication yesdu côté serveur et PuTTY continuera de fonctionner comme il l'a toujours fait sur votre machine Windows. Ce n'est pas un scénario ni / ni - vous pouvez autoriser les deux types d'authentification sur le serveur. PuTTY prend également en charge l'autorisation de clé publique / privée comme ce FWIW. Vous pouvez copier vos ~/.ssh/id_rsa*fichiers sur votre machine Windows et les importer dans PuTTY pour l'authentification sur le serveur. PuTTY, sous le capot, utilise exactement les mêmes bibliothèques OpenSSH pour se connecter que sshsur OS X.
Ian C.

1
ssh-addfonctionne toujours même dans Sierra (OS X 10.12). Merci
SaxDaddy

4

Vous pouvez utiliser sshpass pour enregistrer le mot de passe et vous n'aurez pas à l'insérer à chaque fois, ce qui n'est pas une bonne pratique (problèmes de sécurité).

Suivez les instructions d'installation de mac os x sur: https://gist.github.com/arunoda/7790979

Lorsque vous avez installé sshpass, exécutez sshpass -p "YOUR_PASSWORD" ssh -o StrictHostKeyChecking=no root@123.456.789.012:2200

faites la même chose pour vos 5 serveurs web et vous n'aurez pas besoin d'insérer le mot de passe à chaque fois.


1
Je me sens trop stupide sur celui-ci. Je suppose que l'utilisation d'un PC avec PuTTY et SuperPuTTY m'a juste trop éloigné de la ligne de commande de base. J'ai édité mon OQ avec mon objectif global. Regarde.
tammy

Je suppose maintenant que vous pouvez vous connecter à root@123.456.789.012 et que vous souhaitez simplement automatiser le processus. Vous ne voulez essentiellement pas taper à chaque fois ssh -p 2200 root@123.456.789.012et Password: **********************?
enzo

ssh-copy-idne fait pas partie de la distribution OS X standard.
Ian C.

@IanC. Je pense que j'ai oublié que je l'ai installé avec brew. modifiera ma réponse
enzo

Vous l'avez @maetsoh - c'est exactement ce que je veux réaliser ici.
tammy

1

En plus de la clé publique / privée, le fichier .ssh / config peut être configuré pour faciliter l'utilisation des commandes ssh, comme les alias, par défaut utilisateur / port par serveur, options ssh, commandes proxy ...

Fondamentalement, tout ce qui peut être compliqué dans une commande ssh peut aussi être dans ce fichier.


0

J'ai porté Putty sur Mac en tant qu'ensemble d'applications natives, donc pas besoin de macports ou de terminaux si vous n'êtes pas un utilisateur technique.

Plus d'informations sur les captures d'écran sont ici: http://www.wine-reviews.net/2016/08/putty-for-mac-os-x-now-available.html

À votre santé,


Bienvenue sur Ask Different! Assurez-vous de répondre directement à la question. Si je vous mentionne un produit sur lequel vous travaillez, c'est bien, mais essayez d'être sur le sujet plutôt que de coller le même texte marketing sur plusieurs messages.
bmike
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.