Назад | Перейти на главную страницу

Используете ssh-agent с KDE?

Однажды у меня это работало, но по какой-то причине это не работает в моей новой системе.

в .kde4/Autostart/ У меня есть символическая ссылка на ssh-agent под названием 01-sshagent а затем простой скрипт под названием 02-sshkeys это выглядит так:

/usr/bin/ssh-add $(find $HOME/.ssh/keys -type f | egrep -v '\.pub$')

Проблема, похоже, в том, что при запуске ssh-agent работает нормально, но KDE не удерживает вывод и не сохраняет его в среде, поэтому для каждого сеанса Konsole мне приходится запускать ps чтобы найти PID, а затем введите вручную:

SSH_AUTH_SOCK=/tmp/ssh-YtvdiEtW3065/agent.3065; export SSH_AUTH_SOCK;
SSH_AGENT_PID=<pidnumber>; export SSH_AGENT_PID;

... просто для того, чтобы заставить его работать, и это работает ... только в этом окне Konsole.

Я попытался удалить вышеупомянутую символическую ссылку, и просто сценарий ssh ​​выглядит так:

/usr/bin/ssh-agent | sh
/usr/bin/ssh-add $(find $HOME/.ssh/keys -type f | egrep -v '\.pub$')

Но все же переменные агента не находятся в сеансе, и мне никогда не предлагается ввести пароль для моих ключей.

Я явно чего-то упускаю, но что это?

Мое простое решение - просто запустить один ssh-агент и постоянно держать его в рабочем состоянии. Вы можете убить его при выходе из системы, если хотите. Главное - использовать фиксированную розетку. Добавьте ssh-agent -a /tmp/$USER.agent в сценарий автозапуска. Затем выполните «export SSH_AUTH_SOCK = / tmp / $ USER.agent», а затем ssh-add. Кроме того, вы можете добавить этот экспорт в свой .bashrc, .profile или другой сценарий входа в оболочку и всегда иметь доступ к агенту даже при использовании удаленного ssh.

Это старый вопрос, и, вероятно, он заслуживает обновленного ответа. Последующий работает для меня (Fedora 31 / KDE).

  1. Настройте KWallet с кошельком по умолчанию (kdewallet) и с тем же паролем, что и ваш пароль для входа. Убедитесь, что он разблокируется при входе в систему. В Arch Wiki есть информация об этом; в моем случае мне пришлось раскомментировать некоторые строки в /etc/pam.d/sddm.
  2. Создайте свой SSH-ключ (ssh-keygen) с любым паролем, который вам нравится (поскольку вы собираетесь использовать менеджер паролей, он не должен быть запоминающимся).
  3. Обеспечить ssh-add и ksshaskpass установлены.
  4. Добавьте сценарий автозапуска, как показано ниже:
    $ cat $HOME/.config/autostart-scripts/ssh
    #!/bin/sh
    SSH_ASKPASS=/usr/bin/ksshaskpass ssh-add </dev/null
    
    Делать chmod +x и запустить его один раз. Ksshaskpass должен спросить ваш пароль SSH. Скажите ему, чтобы он запомнил пароль (для этого используется KWallet). Запустите еще раз и обратите внимание, на этот раз он не спрашивает.

Так и должно быть.

По моим наблюдениям, цитата «по какой-то причине не работает в моей новой системе» стоит:

  • при обновлении с Ubuntu 13.04 до 13.10 (новая версия KDE 4.11.5)
  • с оболочкой tcsh

Это происходит с моей любимой оболочкой во время вышеупомянутого обновления как минимум дважды. Любые другие оболочки работают нормально. Эта проблема слишком скудно освещена в Интернете из-за низкой популярности. Итак, одно из решений - перейти на zsh. я делаю это

Я копнул глубже и нашел явную причину ошибки. ssh-agent запускается командой

eval $(ssh-agent)

в файле /usr/share/upstart/sessions/ssh-agent.conf пользователем выскочка. Во-первых, исполняемый файл команды ssh-agent как есть и выдает результат, аналогичный следующему:

setenv SSH_AUTH_SOCK /tmp/ssh-7AWho81toBZZ/agent.13776;
setenv SSH_AGENT_PID 13783;
echo Agent pid 13783;

Во-вторых, этот вывод выполняется eval, и в случае csh мы можем увидеть:

/proc/self/fd/9: 1: eval: setenv: not found

в ~ / .cache / upstart / ssh-agent.log. Эта ошибка возникает из-за "SHELL выглядит как стиль csh" (см. Ssh-agent (1)).

Итак, кратко и исчерпывающе ответ является:

  • добавьте параметр -s в команду вызова ssh-agent (/usr/share/upstart/sessions/ssh-agent.conf):

    eval $ (ssh-agent -s)

  • или не использовать csh