У меня есть личный ключ, настроенный для моей учетной записи на github, парольная фраза к которой, я полагаю, хранится в цепочке для ключей OS X. Мне, конечно, не нужно вводить его, когда я открываю окно терминала и вхожу ssh git@github.com
.
Однако, когда я запускаю bash в сеансе ssh или локально в сеансе tmux, мне приходится вводить парольную фразу каждый раз, когда я пытаюсь выполнить ssh в github.
Этот вопрос предполагает, что похожая проблема существует с экраном, но я не совсем понимаю проблему достаточно, чтобы исправить ее в tmux. Также есть эта страница, которая содержит довольно сложное решение, но для zsh.
РЕДАКТИРОВАТЬ :
В ответ на ответ @ Mikel из локального терминала я получаю следующий вывод:
[~]
$ 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"
Тогда как по ssh или по tmux я получаю:
[~]
$ 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
ничего не возвращает независимо от того, из какой оболочки я запускаю.
typeset -p SSH_AUTH_SOCK
?bash: typeset: SSH_AUTH_SOCK: not found
изнутри ssh / tmux. Я попробую это локально сегодня вечером, если необходимо.Ответы:
Мой коллега создал несколько функций bash, чтобы помочь найти живого агента: https://github.com/wwalker/ssh-find-agent
Он использует его в основном для соединения между системами (от ноутбука к настольному компьютеру и т. Д.), Но я чаще всего использую его для локальных сеансов tmux, когда вы выходите из / в своем оконном менеджере (OS X для меня).
использование
Скачайте ssh-find-agent.bash (
git clone git://github.com/wwalker/ssh-find-agent.git
работает).Добавьте следующее в ~ / .bashrc:
Затем вы можете ввести следующее, чтобы установить SSH_AUTH_SOCK в вашей текущей оболочке:
источник
Элегантное решение, взятое с сайта dagit.o :
Создайте
~/.ssh/rc
добавить в
~/.tmux.conf
источник
В вашем
.tmux.conf
конфигурационном файле добавьте эту строку:Это приводит к тому, что эти переменные окружения копируются из вашей основной оболочки в любые оболочки, открытые в tmux, что позволяет ssh-agent правильно работать в этих оболочках tmux.
источник
update-environment
. ОП должен проверить ихupdate-environment
значение и, возможно, обновить, где бы он ни изменялся.update-environment
установлен правильно. Тем не менее, проблема все еще возникает.tmux
сервера, игнорируя цель повторного присоединения ... Может быть, есть переключатель командной строки для повторного обновления этих переменных?Со мной случилось, что панели, созданные при подключении через ssh из OS X, через некоторое время начали спрашивать мой пароль. Я нашел способ исправить эту кражу из http://santini.di.unimi.it/extras/ph/my-tmux-setup.html
Просто запустите его из жалующейся панели.
источник
Не уверен, что вы используете bash или другую оболочку, но настройка tmux этого парня выглядит так, как будто она работает для bash. Лично я использую zsh с oh-my-zsh и обнаружил, что ssh-agent начал работать в tmux после добавления
в мой файл .zshrc и перезагрузил конфигурацию в моих текущих сеансах zsh. Я также нашел Zsh-ориентированное решение этого парня , но оно оказалось ненужным для меня.
источник
Что значит:
Распечатать?
Запустите его в своем обычном терминале, затем запустите в своей
tmux
сессии. Они должны напечатать то же самое.источник
ssh
легко. Включите переадресацию агента. Самый простой способ сделать это - запуститьssh -A
вместоssh
. Используйте псевдоним, чтобы вам не приходилось каждый раз вводить его или вставлять в свой.SSH/config
.Существует много решений, но самое простое можно найти в ответе Ханса Гинзеля от 8 января 2016 года на связанный вопрос StackOverflow от 27 января 2014 года . Просто добавьте следующее в вашу оболочку
~/.profile
или подобное:Нет необходимости определять многострочные функции или создавать новые временные файлы. Если вы не хотите использовать псевдоним
ssh
, просто измените его наfixssh
и удалите&& ssh
в конце и запускайтеfixssh
всякий раз, когда вы пытаетесь запустить егоssh
из подключенного сеанса tmux.Ответ Ханса Гинзела предполагает, что для запуска требуется «более новая версия» tmux
show-env -s
. Это работает для меня в tmux 2.7, и когда я прочитал список изменений , он-s
был добавлен 3 июня 2008 года, прямо перед выпуском tmux 0.3. tmux 2.3 (29 сентября 2016 г.) находится в стабильной версии Debian.источник