Як я можу вирішити цю проблему ssh-агента?


17

Я використовую Linux Mint, і мені не вдалося отримати gnome-keyring для автоматичного розблокування під час входу.

Симптом моєї проблеми полягає в наступному:

$ ssh-add
Identity added: /home/me/.ssh/id_rsa (/home/me/.ssh/id_rsa)

$ git pull
WARNING: gnome-keyring:: couldn't connect to: /tmp/keyring-Nmf3J3/pkcs11: No such file or directory

Як я можу зробити так, щоб git може натискати / тягнути без будь-якого вводу парольної фрази від мене?

Я усвідомлюю, що тут є кілька речей з gnome-keyring та ssh-agent, але не вдалося це визначити.

Біг ssh-addпід час сеансу означає, що мене більше не просять мою парольну фразу для SSH / git.

Проблема полягає в тому, що мені потрібно запускатись ssh-addпід час кожного сеансу - я, мабуть, пропускаю, як розблокувати ключі Gnome під час входу.

$ export | grep GNOME          
GNOME_KEYRING_CONTROL=/tmp/keyring-hjMM4V
GNOME_KEYRING_PID=1961

Це відбулося знову під час тієї ж сесії, що і перша редакція. Я так git pullі отримав WARNING: gnome-keyring:: couldn't connect to: /tmp/keyring-hjMM4V/pkcs11: No such file or directory.

$ env | grep SSH
SSH_AGENT_PID=2116
SSH_AUTH_SOCK=/tmp/ssh-OACxJMBY2038/agent.2038

$ ps -fp $SSH_AGENT_PID
UID        PID  PPID  C STIME TTY          TIME CMD
eoin      2116  2038  0 09:47 ?        00:00:00 /usr/bin/ssh-agent /usr/bin/dbus-launch --exit-with-session x-session-manager

1
Чи можете ви запустити export | grep GNOMEта опублікувати результати. Ви бачили цю помилку?
didster

Схоже на відповідну помилку. Оскільки я не завжди бачу попередження, я не впевнений, чи є у мене простіша проблема - просто gnome-keyringавтоматично розблокуватись під час входу.
eoinoc

можливо, у вас є інший агент, ніж gnome-keyring. Про що env | grep SSHіps -fp $SSH_AGENT_PID
Стефан Шазелас

@StephaneChazelas Я додав те, що ви запропонували, дякую. Так, я зробив життя комплекс zshі tmuxпрацює (просто кажучи вже про те , що).
eoinoc

Відповіді:


2

Що мається на увазі:

Ви запускаєте сеанс gnome, частина цього запускається демоном-ключем gnome (який також виконує роль ssh-агента), і оточення всього, що почалося під час сеансу gnome, оновлюється інформацією про те, як зв’язатися з цим агентом ssh. Пароль, який ви видаєте при графічному вході, використовується для розблокування типового ключового слова.

Коли ви використовуєте gnome-keyring як ssh-агент, ви не хочете використовувати інший агент, як-от ssh-agent.

Коли ваш X сеанс закінчується, це робить і gnome-keyring. Але ваш сеанс tmux залишається. Тоді, навіть якщо ви запустили інший gnome-keyring або ssh-агент, оточення вже запущених процесів tmuxне зможе поговорити з ним, якщо ви не оновите їхнє середовище шляхом нового сокета.

Що ви можете зробити:

gnome-keyring-daemon -r > ~/.gkr

І зробіть . ~/.gkrу всіх оболонках, які ви хочете використовувати, щоб новий gnome-keyring

Будьте обережні, хоч з якої ДИСПЛЕЙУЙТЕ, до якого збирається підключитися gnome-keyring-демон.


Ви маєте на увазі це лише тоді, коли мій сеанс X закінчується, іншими словами, коли я виходжу з системи та знову входжу знову? У мене немає .gkr, чи варто? Як я можу остерігатися, до якого дисплея, до gnome-keyring-daemonякого збирається підключитися?
eoinoc

2

Перше, що я б спробував, це в apt-get install ssh-askpass-gnomeіншому випадку, якщо у вас не встановлено цей пакет (або якусь альтернативну програму пропуску), то gnome не може запропонувати вам пароль, коли вам потрібно розблокувати ключ.

Також вам знадобиться DISPLAYправильно встановити змінну:

$ echo $DISPLAY
:0.0

Крім того, як ви запускаєте свій термінал? Може виникнути проблема з тим, як ви запускаєте сеанс терміналу і від того, чи це він успадковується gnome-session. Це може статися, коли ви використовуєте якусь програму gnon-gnome для встановлення своїх ключових прив’язок.

Припускаючи, що gnome-terminalви можете перевірити використання pstree. Тут ви можете бачити правильну спадщину:

$ pgrep gnome-terminal | xargs -l1 pstree -s 
init(1)───lightdm(1643)───lightdm(26912)───gnome-session(27049)───xmonad-x86_64-l(27139)───gnome-terminal(26036)─┬─bash(26041)
                                                                                                                 ├─gnome-pty-helpe(+
                                                                                                                 ├─{gnome-terminal}+
                                                                                                                 ├─{gnome-terminal}+
                                                                                                                 └─{gnome-terminal}+

В той час як у цьому сеансі НЕ успадковується від gnome-session:

$ pgrep gnome-terminal | xargs -l1 pstree -s 
init(1)───sh(25919)───gnome-terminal(25920)─┬─bash(25927)
                                            ├─gnome-pty-helpe(25926)
                                            ├─{gnome-terminal}(25921)
                                            ├─{gnome-terminal}(25924)
                                            └─{gnome-terminal}(25928)

Також перевірте, ssh-agentщо починається gnome-session:

$ pgrep ssh-agent | xargs -l1 pstree -s
init(1)───lightdm(1643)───lightdm(26912)───gnome-session(27049)───ssh-agent(27091)

Трохи складно з приводу того, який термінал я використовую (моя власна вина!). Моя команда запуску терміналу - це mate-terminal --maximize -e tmux(я вважаю , що gnome-terminal). Крім того, zshзавантажується всередину tmux. ssh-askpass-gnomeбуло встановлено. $DISPLAYочікуваний результат. Щодо спадщини, tmuxто сидиш, mate-terminalне згадуючи gnome-session. На окремій гілці це tmux───zsh───xargs───pstree. Щоб відповісти на ваше останнє питання, вихід: init───mdm───mdm───x-session-manag───ssh-agent. Що ти думаєш? Спасибі.
eoinoc

ну, припускаючи, що ви використовуєте gnome (і я думаю, що монетний двір робить за замовчуванням, так що, якщо ви не змінили його з типового?), то, я думаю, проблема не з вашим mate-terminalуспадкуванням gnome-session. два питання: 1) що є результатом pgrep -fl gnome-sessionі; 2) які дії ви вживаєте, щоб фактично викликати свій термінал? з меню? від прив'язки гарячої клавіші? або ????
aculich

Так, я на Gnome. 1) Вихід порожній. 2) Дуже цікаво. Я зазвичай так роблю Ctrl+Alt+t. Це ярлик, який я встановив за допомогою програми Linux Mint Keyboard Shortcutsза допомогою команди, яку я раніше згадував. Однак при запуску Terminalчерез головне меню «Пуск» SSH діяв інакше . Графічний інтерфейс Gnome запропонував мені отримати пароль до мого брелока. Варіант збереження цієї парольної фрази для наступних сеансів був замурований, я не міг її вибрати. (Команда запуску меню також є mate-terminal --maximize -e tmux.) Це зближує нас? Спасибі, акуліч.
eoinoc

Якщо ви бачите дивну поведінку з тим, Ctrl+Alt+tщо ви встановили в клавіатурних скороченнях, я думаю, ви, мабуть, відчуваєте помилку в mdm / MATE. Яку версію Монетного двору ви використовуєте?
акуліч

Я за однією версією, на Linux Mint 13. Але чому для терміналу, який отримує доступ до меню, чому він все ще не дозволить мені вибрати "зберегти цю парольну фразу для кожного разу, коли я входжу"?
eoinoc

1

Я думаю, що проблема в постійному зберіганні захищеного паролем SSH ключа.

Будь ласка, подивіться на такі ресурси:


Я коментую, як піду. Першим посиланням я додав `IdentityFile ~ / .ssh / id_rsa`, ~/.ssh/configале це не виправило.
eoinoc

Третє посилання показує основні настройки, які, схоже, не йдуть далі, ніж те, що я вже зробив. Спасибі, хоча.
eoinoc

-1

Додайте це до свого .bash_profile

if [ -n "$SSH_AUTH_SOCK" \
    -a "${SSH_AUTH_SOCK::13}" = "/tmp/keyring-" \
    -a ! -L "$SSH_AUTH_SOCK" ]
then
    OLD_AUTH_SOCK="$SSH_AUTH_SOCK"
    eval `ssh-agent`
    mv "$OLD_AUTH_SOCK" "$OLD_AUTH_SOCK"~
    ln -sfn "$SSH_AUTH_SOCK" "$OLD_AUTH_SOCK"
    SSH_AUTH_SOCK="$OLD_AUTH_SOCK"
fi

Дякую Марку. При цьому $SSH_AUTH_SOCKмає значення /tmp/ssh-QCndYkdq2025/agent.2025. Я щось пропускаю? $git pullяк і раніше відображає підказку про пароль SSH.
eoinoc

Перевірте свої дозволи на вашому .ssh / Author_keys файлі на сервері. Це має бути 0600.
Марк Коен

На сервері? GitHub - це зовнішній сервер, і там записаний мій ключ SSH. Хіба це більше не місцева проблема, ні?
eoinoc

Вибачте, не зрозуміли, що ви використовуєте github. Так, у вас немає контролю над цим хостом. Ви можете додати кілька ключів до свого агента ssh та експериментувати в sshing для localhost, щоб переконатися, що ви можете правильно зареєструватися. Крім того, ви можете спробувати ssh -vvv user @ host і подивитися, що зламається.
Марк Коен

Більшість настільних систем Linux (включена монетний двір) спрацьовують ssh-agentналежним чином при вході прямо з коробки, і зазвичай це руйнує власні речі, подібні цій. Якщо з якоїсь причини ваша система не справляється ssh-agent, не робіть цього вручну. Замість цього використовуйте брелок, який добре розроблений для вирішення цього та пов'язаних з цим проблем. Він також працює для BSD (Mac) та інших нелінукс-систем.
aculich
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.