J'ai une clé privée configurée pour mon compte github, la phrase secrète à laquelle est, je crois, stockée dans le trousseau d'OS X. Je n'ai certainement pas besoin de le saisir lorsque j'ouvre une fenêtre de terminal et que j'entre ssh [email protected]
.
Cependant, lorsque j'exécute bash sur une session ssh, ou localement dans une session tmux, je dois taper la phrase secrète chaque fois que j'essaie de ssh vers github.
Cette question suggère qu'un problème similaire existe avec l'écran, mais je ne comprends pas assez bien le problème pour le résoudre dans tmux. Il y a aussi cette page qui inclut une solution assez compliquée, mais pour zsh.
MODIFIER :
En réponse à la réponse de @ Mikel , à partir d'un terminal local, j'obtiens la sortie suivante:
[~]
$ echo $SSH_AUTH_SOCK
/tmp/launch-S4HBD6/Listeners
[~]
$ ssh-add -l
2048 [my key fingerprint] /Users/richie/.ssh/id_rsa (RSA)
[~]
$ typeset -p SSH_AUTH_SOCK
declare -x SSH_AUTH_SOCK="/tmp/launch-S4HBD6/Listeners"
Alors que sur ssh ou dans tmux j'obtiens:
[~]
$ echo $SSH_AUTH_SOCK
[~]
$ ssh-add -l
Could not open a connection to your authentication agent.
[~]
$ typeset -p SSH_AUTH_SOCK
bash: typeset: SSH_AUTH_SOCK: not found
echo $SSH_AGENT_PID
ne renvoie rien quel que soit le shell à partir duquel je l'exécute.
typeset -p SSH_AUTH_SOCK
?bash: typeset: SSH_AUTH_SOCK: not found
depuis ssh / tmux. Je vais l'essayer localement ce soir, si nécessaire.Réponses:
Mon collègue a créé quelques fonctions bash pour aider à trouver un agent en direct: https://github.com/wwalker/ssh-find-agent
Il l'utilise principalement pour la connexion entre les systèmes (ordinateur portable à ordinateur de bureau, etc.), mais je l'utilise le plus souvent pour les sessions tmux locales où vous vous déconnectez / vous connectez à partir de votre gestionnaire de fenêtres (OS X pour moi).
Usage
Téléchargez ssh-find-agent.bash (
git clone git://github.com/wwalker/ssh-find-agent.git
fonctionne).Ajoutez ce qui suit à ~ / .bashrc:
Ensuite, vous pouvez taper ce qui suit pour définir SSH_AUTH_SOCK dans votre shell actuel:
la source
Une solution élégante, reprise de dagit.o :
Créer
~/.ssh/rc
Ajouter à
~/.tmux.conf
la source
Dans votre
.tmux.conf
fichier de configuration, ajoutez cette ligne:Cela entraîne la copie de ces variables d'environnement de votre shell principal vers tous les shells ouverts dans tmux, ce qui permet à ssh-agent de fonctionner correctement dans ces shells tmux.
la source
update-environment
. L'OP doit vérifier leurupdate-environment
valeur et éventuellement la mettre à jour là où elle est déjà en cours de modification.update-environment
est réglé correctement. Cependant, le problème persiste.tmux
serveur n'est présent, défiant le but de la réattacher ... Peut-être qu'il y a un commutateur de ligne de commande pour mettre à jour ces variables?Il m'est arrivé que des volets créés lors de la connexion via ssh à partir d'OS X ont commencé à demander ma phrase de passe après un certain temps de travail ok. J'ai trouvé un moyen de résoudre ce problème en volant cette ligne à partir de http://santini.di.unimi.it/extras/ph/my-tmux-setup.html
Il suffit de l'exécuter à partir du volet qui se plaint.
la source
Je ne sais pas si vous utilisez bash ou un autre shell, mais la configuration tmux de ce type semble fonctionner pour bash. Personnellement, j'utilise zsh avec oh-my-zsh , et j'ai trouvé que ssh-agent a commencé à travailler dans tmux après avoir ajouté
dans mon fichier .zshrc et rechargé la configuration dans mes sessions zsh en cours d'exécution. J'ai également trouvé la solution orientée zsh de ce type , mais cela s'est avéré inutile pour moi.
la source
Qu'est-ce que:
impression?
Exécutez-le dans votre terminal normal, puis exécutez-le dans votre
tmux
session. Ils devraient imprimer la même chose.la source
ssh
est facile. Activez le transfert d'agent. Le moyen le plus simple de le faire est d'exécuterssh -A
au lieu dessh
. Utilisez un alias pour ne pas avoir à le saisir à chaque fois ou à le mettre dans votre.SSH/config
.Il existe de nombreuses solutions, mais la plus simple se trouve dans la réponse de Hans Ginzel, datée du 8 janvier 2016, à une question StackOverflow connexe datée du 27 janvier 2014 . Ajoutez simplement ce qui suit à votre coque
~/.profile
ou similaire:Il n'est pas nécessaire de définir des fonctions multilignes ou de créer de nouveaux fichiers temporaires. Si vous ne voulez pas d'alias
ssh
, changez-le simplement enfixssh
et supprimez-le&& ssh
à la fin, et exécutez-lefixssh
chaque fois que vous essayez de l'exécuterssh
depuis l'intérieur d'une session tmux réattachée.La réponse de Hans Ginzel suggère qu'une «nouvelle version» de tmux est nécessaire pour fonctionner
show-env -s
. Cela fonctionne pour moi dans tmux 2.7, et à ma lecture du changelog , a-s
été ajouté le 3 juin 2008 juste avant la sortie de tmux 0.3. tmux 2.3 (29 septembre 2016) est dans Debian stable.la source