Comment ajouter définitivement une clé privée ssh-add sur Ubuntu?
J'ai une clé privée protégée par un mot de passe pour accéder à un serveur via SSH.
J'ai 2 linux (ubuntu 10.04) les machines et le comportement de la commande ssh-add est différente dans les deux d'entre eux.
Dans une machine, une fois que j'utilise "ssh-add .ssh/identity" et entré mon mot de passe, la clé a été ajoutée de façon permanente, c'est à dire, chaque fois que j'ai arrêter l'ordinateur et reconnectez-vous, la clé a déjà été ajouté.
L'un dans l'autre, j'ai du ajouter la clé à chaque fois que je connexion.
Aussi loin que je me 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 de façon permanente.
Personne ne sait comment ajouter de façon permanente à l'autre de la machine ainsi?
- l'agent doit être temporaire, mais il est possible que vous ayez la commande ssh-add quelque part dans ~/.bashrc ou sur l'une des deux machines
Vous devez vous connecter pour publier un commentaire.
Une solution serait d'obliger les fichiers de clé pour être conservés de façon permanente, en les ajoutant dans votre
~/.ssh/config
fichier:Si vous ne disposez pas d'un fichier 'config' dans le ~/.ssh directory, vous devez en créer un. Il n'a pas besoin des droits root, il suffit d':
...et entrez les lignes ci-dessus selon vos exigences.
Pour que cela fonctionne, le fichier doit avoir un chmod 600. Vous pouvez utiliser la commande
chmod 600 ~/.ssh/config
.Si vous souhaitez que tous les utilisateurs sur l'ordinateur pour utiliser la clé de mettre 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écifiques à un hôte, vous pouvez effectuer les opérations suivantes dans votre ~/.ssh/config :
Cela a l'avantage lorsque vous avez beaucoup d'identités qu'un serveur ne refuse pas de vous parce que vous avez essayé la mauvaise identités en premier. Seulement l'identité spécifique sera essayé.
chmod 600 config
ssh-add ~/.ssh/gitHubKey
, il se souviendra de votre mot de passe. La solution que j'ai proposée a été de définir de façon permanente entre les redémarrages.Host github.com
Ce n'ai pas la réponse à la même question pour moi sous Mac OS X Lion. J'ai fini par ajouter:
À mon .zshrc (mais .profil serait bien aussi), qui semble avoir fixé.
(Comme suggéré ici: http://geek.michaelgrace.org/2011/09/permanently-add-ssh-key-ssh-add/ )
ForwardAgent yes
à mon.ssh/config
) a résolu le problème de manière fantastique. Comme il s'avère, il pourrait juste êtressh-add &>/dev/null
que le comportement par défaut dessh-add
semble être pour ajouter les clés qu'il trouve dans votre.ssh
dossier.-K
n'est pas réellement de l'aide, mais c'est une excellente solution pour les autres Q.J'ai résolu le problème sur Mac OS x (10.10) à l'aide de l'option-K pour ssh-add:
Pour macOS 10.12 et, plus tard, vous avez besoin de modifier votre ssh config comme décrit ici: https://github.com/jirsbek/SSH-keys-in-macOS-Sierra-keychain
man ssh-add
sur macOS High Sierra,ssh-add -K
permettra d'enregistrer le mot de passe dans le trousseau d'accès, et après le redémarrage, il suffit d'utiliserssh-add -A
, qui n'a pas besoin d'entrer votre mot de passe.Il suffit d'ajouter le porte-clés, telles que citées dans Ubuntu Astuces
https://help.ubuntu.com/community/QuickTips
Ce
Au lieu de constamment départ ssh-agent et ssh-add, il est possible d'utiliser un trousseau de gérer vos clés ssh. Pour installer le trousseau, il vous suffit de cliquer ici ou utiliser Synaptic pour faire le travail ou apt-get à partir de la ligne de commande.
Ligne de commande
Un autre moyen pour installer le fichier pour ouvrir le terminal (Applications->Accessoires->Terminal) et tapez:
Modifier Le Fichier
Ensuite, vous devez ajouter les lignes suivantes à votre ${HOME}/.bashrc ou /etc/bash.bashrc:
.
est un alias poursource
J'ai essayé @Aaron solution et il n'a pas assez de travail pour moi, car il permettrait d'ajouter mes clés à chaque fois que j'ouvre un nouvel onglet dans mon terminal. Alors je l'ai modifié un peu(notez que la plupart de mes clés sont également protégés par mot de passe donc je ne peux pas juste envoyer la sortie vers /dev/null):
Ce que ce n'est qu'elle vérifie la sortie de
ssh-add -l
(qui énumère toutes les clés qui ont été ajoutés) pour une clé spécifique et si il ne le trouve pas, puis il ajoute avecssh-add
.Maintenant la première fois que j'ouvre mon terminal je me suis demandé pour les mots de passe pour mes clés privées et je ne suis pas demandé à nouveau jusqu'à ce que je redémarre(ou de déconnexion - je n'ai pas vérifié) mon ordinateur.
Depuis que j'ai un trousseau de clefs, je stocker la sortie de
ssh-add -l
dans une variable afin d'améliorer les performances(au moins je suppose que cela améliore les performances 🙂 )PS: je suis sur linux et ce code est allé à mon
~/.bashrc
fichier - si vous êtes sur Mac OS X, alors je suppose que vous devez l'ajouter à.zshrc
ou.profile
EDIT:
Comme l'a souligné @Aaron dans les commentaires, le
.zshrc
fichier est utilisé à partir de lazsh
shell - donc, si vous ne l'utilisez pas si vous n'êtes pas sûr, alors très probablement, vous êtes à l'aide debash
à la place), ce code devrait aller à votre.bashrc
fichier..zshrc
est pour lezsh
shell, qui je utiliser à la place debash
. Si vous utilisezbash
sur Mac OS X (par défaut), il serait.bashrc
il ainsi.ssh-add -l
code de retourecho $?
peut être utilisé pour décider d'ajouter une clé ou pas. Im ma machine linux avec bash, lessh-add -l
ne sera pas sortie de la clé de nom de fichier. Code de retour fonctionne toujours.Dans mon cas, la solution était:
Comme mentionné dans les commentaires ci-dessus par
generalopinion
Pas besoin de toucher au fichier de configuration de contenu.
~/.ssh/config
fichier en lecture/écriture pour l'utilisateur, et non modifiable par d'autres.J'ai eu le même problème sur Ubuntu 16.04: certaines touches ont été ajoutées en permanence, pour d'autres, j'ai eu à exécuter
ssh-add
sur chaque session. J'ai trouvé que les clés qui ont été ajoutés en permanence a la fois privée et la clé publique située dans~/.ssh
et les clés qui ont été oubliés sur chaque session, avait seulement des clés privées~/.ssh
dir. Donc, la solution est simple: vous devez copier les deux privée et la clé publique à~/.ssh
avant l'exécution dessh-add
.P. S.: aussi loin Que je comprends de Wiki Gnome ma méthode fonctionne grâce à gnome-keyring outil qui fait partie de l'Environnement de Bureau Gnome. Donc ma méthode doit probablement travailler uniquement si vous utilisez Gnome et Gnome-base DE.
Sur Ubuntu 14.04 (peut-être avant, peut-être encore), vous n'avez même pas besoin de la console:
seahorse
ou de lancer cette chose que vous trouvez à la recherche de "clé"ssh
vont ramasser de l'identité (clé) par le biais de l'agentssh
avec-A
ou le faire que le défautAjoutant les lignes suivantes dans "~/.bashrc" a résolu le problème pour moi. Je suis sous Ubuntu 14.04 desktop.
- Je exécuter Ubuntu à l'aide de deux id_rsa de la clé. (l'un personnel, l'autre pour le travail).
ssh-add voudrais rappeler une des clés (personnel) et d'oublier la société à chaque fois.
De vérifier la différence entre les deux, j'ai vu ma clé personnelle a 400 droits, alors que la compagnie avait 600 droits. (a u+w).
Suppression de l'utilisateur d'écrire de droite à partir de l'clés de l'entreprise (u-w ou égal à 400) fixe mon problème. ssh-add se souvient maintenant les deux touches.
très simple ^_^ en deux étapes
1.yum install trousseau
2.ajoutez le code ci-dessous pour .bash_profile
Cela a fonctionné pour moi.
Pour ceux qui utilisent des Poissons shell, vous pouvez utiliser la fonction suivante, puis appelez-le dans ~/.config/poisson/config.du poisson. Il va charger toutes les clés qui commencent par id_rsa dans le
ssh-agent
.Si vous voulez avoir la
ssh-agent
auto commencé lorsque vous ouvrez un terminal, vous pouvez utiliser tuvistavie/poisson-ssh-agent pour ce faire.