J'ai une clé privée protégée par un mot de passe pour accéder à un serveur via SSH.
J'ai 2 machines Linux (Ubuntu 10.04) et le comportement de la commande ssh-add est différent dans les deux.
Dans une machine, une fois que j'ai utilisé "ssh-add .ssh / identity" et que j'ai entré mon mot de passe, la clé a été ajoutée de façon permanente, c'est-à-dire qu'à chaque fois que j'arrête l'ordinateur et me reconnecte, la clé est déjà ajoutée.
Dans l'autre, je dois ajouter la clé à chaque connexion.
Pour autant que je m'en souvienne, j'ai fait la même chose sur les deux. La seule différence est que la clé a été créée sur celle qui est ajoutée en permanence.
Est-ce que quelqu'un sait aussi l'ajouter de façon permanente à l'autre machine?
Réponses:
Une solution serait de forcer la conservation permanente des fichiers clés, en les ajoutant dans votre
~/.ssh/config
fichier:Si vous n'avez pas de fichier 'config' dans le répertoire ~ / .ssh, vous devez en créer un. Il n'a pas besoin de droits root, donc simplement:
... et entrez les lignes ci-dessus selon vos besoins.
Pour que cela fonctionne, le fichier doit avoir chmod 600. Vous pouvez utiliser la commande
chmod 600 ~/.ssh/config
.Si vous souhaitez que tous les utilisateurs de l'ordinateur utilisent la clé, mettez ces lignes dans
/etc/ssh/ssh_config
et la clé dans un dossier accessible à tous.De plus, si vous souhaitez définir la clé spécifique à un hôte, vous pouvez effectuer les opérations suivantes dans votre ~ / .ssh / config:
Cela a l'avantage lorsque vous avez de nombreuses identités qu'un serveur ne vous rejette pas parce que vous avez d'abord essayé les mauvaises identités. Seule l'identité spécifique sera tentée.
la source
chmod 600 config
ssh-add ~/.ssh/gitHubKey
, il se souviendra de votre phrase secrète. La solution que j'ai proposée était de la définir de façon permanente lors des redémarrages.Cela n'a pas répondu au même problème pour moi sous Mac OS X Lion. J'ai fini par ajouter:
Pour mon .zshrc (mais .profile serait bien aussi), ce qui semble l'avoir corrigé.
(Comme suggéré ici: http://geek.michaelgrace.org/2011/09/permanently-add-ssh-key-ssh-add/ )
la source
ForwardAgent yes
à la mienne.ssh/config
) a résolu ce problème de manière fantastique. Il s'avère que cela pourrait être simplementssh-add &>/dev/null
comme le comportement par défaut dessh-add
semble être d'ajouter les clés qu'il trouve dans votre.ssh
dossier.-K
ajoute des clés au trousseau d'OS X, que les interfaces graphiques d'OS X utilisent pour s'authentifier auprès de serveurs étrangers. L'affiche dans laquelle Q se connecte via un tunnel SSH, mais se connecte toujours à un serveur distant. A - [Tunnel SSH] -> B Dans le cas où je suis, je suis sur un serveur distant mais je veux que l'authentification soit contre les informations d'identification sur mon système domestique. A <- [Auth] - B - [Connect] -> C Donc-K
ça n'aide pas vraiment, mais c'est une excellente solution pour l'autre Q.J'ai résolu ce problème sur Mac OSX (10.10) en utilisant l'option -K pour ssh-add:
Pour macOS 10.12 et versions ultérieures, vous devez également modifier votre configuration ssh comme décrit ici: https://github.com/jirsbek/SSH-keys-in-macOS-Sierra-keychain
la source
man ssh-add
sur macOS High Sierra,ssh-add -K
enregistrera la phrase secrète dans le trousseau, et après le redémarrage, utilisez simplementssh-add -A
, qui n'a pas besoin de vous pour entrer votre phrase secrète.Ajoutez simplement le trousseau, comme référencé dans les conseils rapides d'Ubuntu https://help.ubuntu.com/community/QuickTips
Quoi
Au lieu de démarrer constamment ssh-agent et ssh-add, il est possible d'utiliser le trousseau pour gérer vos clés ssh. Pour installer le trousseau, vous pouvez simplement cliquer ici, ou utiliser Synaptic pour faire le travail ou apt-get depuis la ligne de commande.
Ligne de commande
Une autre façon d'installer le fichier est d'ouvrir le terminal (Application-> Accessoires-> Terminal) et de taper:
Modifier le fichier
Vous devez ensuite ajouter les lignes suivantes à votre $ {HOME} /. Bashrc ou /etc/bash.bashrc:
la source
.
est un alias poursource
J'ai essayé la solution de @ Aaron et cela ne fonctionnait pas tout à fait pour moi, car elle ajoutait mes clés à chaque fois que j'ouvrais un nouvel onglet dans mon terminal. Je l'ai donc un peu modifié (notez que la plupart de mes clés sont également protégées par mot de passe, donc je ne peux pas simplement envoyer la sortie vers / dev / null):
Cela signifie qu'il vérifie la sortie de
ssh-add -l
(qui répertorie toutes les clés qui ont été ajoutées) pour une clé spécifique et s'il ne la trouve pas, il l'ajoute avecssh-add
.Maintenant, la première fois que j'ouvre mon terminal, on me demande les mots de passe de mes clés privées et on ne me le redemande qu'au redémarrage (ou à la déconnexion - je n'ai pas vérifié) mon ordinateur.
Étant donné que j'ai un tas de clés, je stocke la sortie de
ssh-add -l
dans une variable pour améliorer les performances (au moins, je suppose que cela améliore les performances :))PS: je suis sur linux et ce code est allé dans mon
~/.bashrc
fichier - si vous êtes sur Mac OS X, je suppose que vous devez l'ajouter.zshrc
ou.profile
EDIT: Comme souligné par @Aaron dans les commentaires, le
.zshrc
fichier est utilisé à partir duzsh
shell - donc si vous n'utilisez pas cela (si vous n'êtes pas sûr, alors très probablement, vous utilisez à labash
place), ce code devrait allez dans votre.bashrc
dossier.la source
.zshrc
est pour lezsh
shell, que j'utilise à la placebash
. Si vous utilisezbash
sur Mac OS X (par défaut), il serait également.bashrc
là.ssh-add -l
code retourecho $?
peut être utilisé pour décider d'ajouter ou non une clé. Im ma machine Linux avec bash, lessh-add -l
ne produira pas le nom de fichier clé. Le code retour fonctionne toujours.Dans mon cas, la solution était:
Comme mentionné dans les commentaires ci-dessus par generalopinion
Pas besoin de toucher le contenu du fichier de configuration.
la source
~/.ssh/config
fichier est en lecture / écriture pour l'utilisateur et non accessible en écriture pour les autres.J'ai eu le même problème sur Ubuntu 16.04: certaines clés ont été ajoutées en permanence, pour d'autres j'ai dû les exécuter
ssh-add
à chaque session. J'ai découvert que les clés ajoutées en permanence contenaient des clés privées et publiques~/.ssh
et que les clés oubliées à chaque session n'avaient que des clés privées en~/.ssh
dir. Donc , la solution est simple: vous devez copier à la fois la clé privée et publique~/.ssh
avant d' exécuterssh-add
.PS: D'après ce que je comprends du wiki Gnome, ma méthode fonctionne grâce à l'outil gnome-keyring qui fait partie de l'environnement de bureau Gnome. Par conséquent, ma méthode ne devrait probablement fonctionner que si vous utilisez Gnome ou DE basé sur Gnome.
la source
L'ajout des lignes suivantes dans "~ / .bashrc" a résolu le problème pour moi. J'utilise le bureau Ubuntu 14.04.
la source
Sur Ubuntu 14.04 (peut-être plus tôt, peut-être encore), vous n'avez même pas besoin de la console:
seahorse
ou lancer cette chose que vous trouvez en recherchant "clé"ssh
récupérera l'identité (c'est-à-dire la clé) via l'agentssh
avec-A
ou faites-en la valeur par défaut.la source
J'exécute Ubuntu en utilisant deux clés id_rsa. (un personnel pour le travail). ssh-add se souviendrait d'une clé (personnelle) et oublierait l'entreprise à chaque fois.
En vérifiant la différence entre les deux, j'ai vu que ma clé personnelle avait 400 droits tandis que celle de l'entreprise avait 600 droits. (eu u + w). La suppression de l'écriture utilisateur directement à partir de la clé d'entreprise (uw ou définie sur 400) a résolu mon problème. ssh-add se souvient maintenant des deux clés.
la source
Cela a fonctionné pour moi.
la source
très simple ^ _ ^ deux étapes
1. yum installer le trousseau
2. ajoutez le code ci-dessous à .bash_profile
la source
Pour ceux qui utilisent Fish shell, vous pouvez utiliser la fonction suivante puis l'appeler dans
~/.config/fish/config.fish
ou dans un fichier de configuration distinct dans~/.config/fish/conf.d/loadsshkeys.fish
. Il chargera toutes les clés commençant par id_rsa dans lessh-agent
.Si vous souhaitez
ssh-agent
démarrer automatiquement lorsque vous ouvrez un terminal, vous pouvez utiliser tuvistavie / fish-ssh-agent pour ce faire.la source