ssh-agent перестал работать после обновления до 13.10 [дубликат]

Перед обновлением

Когда я запускал git clone (скрытый) (с использованием ssh) один раз на перезагрузку компьютера, появилось диалоговое окно, содержащее текстовое поле для вставки моей парольной фразы SSH и подтверждено с помощью OK. Тогда кодовая фраза больше не требовалась до следующего запуска моей системы.

После обновления до 13.10

После обновления до Ubuntu 13.10 это окно больше не появляется, но появляется сообщение в терминале:

Enter passphrase for key '/home/username/.ssh/id_rsa': 

... это появляется каждый раз при клонировании репозитория git.

Как я могу это исправить? Я хочу ввести кодовую фразу только один раз.

153
задан 12 June 2020 в 17:37

10 ответов

Обновление: похоже, ошибка с 13.10:

https://bugs.launchpad.net/ubuntu/+source/libpam-ssh/+bug/1247169


В любом случае, выполнив следующие команды, проблема была решена для меня:

Как исправить

Я исправил это, введя следующие команды:

$ ssh-agent bash

Это создает новый процесс bash, который позволяет вам добавлять закрытые ключи. При добавлении нового закрытого ключа вам будет предложено ввести парольную фразу один и только один раз.

А затем:

$ ssh-add /home/username/.ssh/id_rsa
Enter passphrase for /home/username/.ssh/id_rsa: 
Identity added: /home/username/.ssh/id_rsa (/home/username/.ssh/id_rsa)

... где имя пользователя - ваше имя пользователя. Вы можете сделать то же самое, используя переменную $ USER :

$ ssh-add /home/$USER/.ssh/id_rsa

Или просто используйте ~ для своего домашнего каталога.

$ ssh-add ~/.ssh/id_rsa

И проблема была устранена.

150
ответ дан 5 January 2021 в 23:17

Альтернативным решением является использование связки ключей .
Страница руководства .

Связка ключей помогает вам управлять ключами SSH и GPG удобным и безопасным способом. Он действует как интерфейс для ssh-agent и ssh-add, но позволяет легко иметь один длительный процесс ssh-agent для каждой системы, вместо обычного одного ssh-агента на сеанс входа в систему.

Это значительно снижает время количество раз, которое вам нужно ввести парольную фразу.

0
ответ дан 5 January 2021 в 23:17

Я использую это:

vim ~/.profile

eval `/usr/bin/gnome-keyring-daemon --start --components=pkcs11,secrets,ssh,gpg`
export SSH_AUTH_SOCK
export GPG_AGENT_INFO
0
ответ дан 5 January 2021 в 23:17

Пользователи рыбной раковины могут использовать этот скрипт , чтобы сделать то же самое.

# content has to be in .config/fish/config.fish
# if it does not exist, create the file
setenv SSH_ENV $HOME/.ssh/environment

function start_agent                                                                                                                                                                    
    echo "Initializing new SSH agent ..."
    ssh-agent -c | sed 's/^echo/#echo/' > $SSH_ENV
    echo "succeeded"
    chmod 600 $SSH_ENV 
    . $SSH_ENV > /dev/null
    ssh-add
end

function test_identities                                                                                                                                                                
    ssh-add -l | grep "The agent has no identities" > /dev/null
    if [ $status -eq 0 ]
        ssh-add
        if [ $status -eq 2 ]
            start_agent
        end
    end
end

if [ -n "$SSH_AGENT_PID" ] 
    ps -ef | grep $SSH_AGENT_PID | grep ssh-agent > /dev/null
    if [ $status -eq 0 ]
        test_identities
    end  
else
    if [ -f $SSH_ENV ]
        . $SSH_ENV > /dev/null
    end  
    ps -ef | grep $SSH_AGENT_PID | grep -v grep | grep ssh-agent > /dev/null
    if [ $status -eq 0 ]
        test_identities
    else 
        start_agent
    end  
end
4
ответ дан 5 January 2021 в 23:17

Этот документ Atlassian ( backup.org backup ) исправил проблему для меня в Ubuntu 14.04 Server Edition:

Просто добавьте эти значения в свой .bashrc файл:

SSH_ENV=$HOME/.ssh/environment
   
# start the ssh-agent
function start_agent {
    echo "Initializing new SSH agent..."
    # spawn ssh-agent
    /usr/bin/ssh-agent | sed 's/^echo/#echo/' > "${SSH_ENV}"
    echo succeeded
    chmod 600 "${SSH_ENV}"
    . "${SSH_ENV}" > /dev/null
    /usr/bin/ssh-add
}
   
if [ -f "${SSH_ENV}" ]; then
     . "${SSH_ENV}" > /dev/null
     ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {
        start_agent;
    }
else
    start_agent;
fi

И после входа в систему он запрашивает пароль только один раз и кеширует . Его не нужно вводить каждый раз.

38
ответ дан 5 January 2021 в 23:17

0) Краткий ответ

Добавьте в свой .ssh / config одну строку в начале:

AddKeysToAgent yes

и запустите git / ssh / ... Если это недостаточно, проверьте свою версию ssh и убедитесь, что ssh-agent загружен, следуя этим инструкциям:

1) Проверьте версию openssh

Сначала проверьте, что ваша версия ssh, она должна быть на больше или равна 7.2 :

ssh -V

2) Отредактируйте файл конфигурации

Если это так, просто добавьте в свой .ssh / config одну строку в начале:

AddKeysToAgent yes

3) Проверьте, если ssh-агент уже открыт

Обычно дистрибутивы автоматически загружают ssh-agent. Чтобы проверить это, запустите

ps aux | grep -v grep | grep ssh-agent

. Если вы не видите ни одной строки, содержащей его, вам нужно загрузить его, запустив:

eval $(ssh-agent)

Обратите внимание, что это включает агент только на текущем терминале, поэтому, чтобы включить его везде, вы можете попробуйте добавить эту строку в свой файл ~ / .profile и перезагрузитесь.

65
ответ дан 5 January 2021 в 23:17

Чтобы исправить эту ошибку , можно добавить следующее в конец ~ / .bashrc

eval `gnome-keyring-daemon --start`
21
ответ дан 5 January 2021 в 23:17

Если вы используете файл azure .ppk

, просто преобразуйте его в pem и добавьте разрешение 400, выполнив простые действия:

sudo apt-get install putty
puttygen <path_to_key>/keyname.ppk -O private-openssh -o <path>/aws_key.pem
sudo chmod 400 <path>/aws_key.pem
ssh -vi aws_key.pem ubuntu@<ip_address>
0
ответ дан 5 January 2021 в 23:17

Я потратил далеко слишком долго, чтобы запустить его на WSL2 Ubuntu 20.04. Наконец, нам нужно запустить ssh-agent при создании новой консоли, но не загружать ключ thne. Загрузите ключ при первом использовании и используйте AddKeysToAgent .

Добавьте следующее в конце вашего ~ / .bashrc или ~ / .zshrc :

SSH_ENV="$HOME/.ssh/agent-environment"

function start_agent {
    /usr/bin/ssh-agent | sed 's/^echo/#echo/' > "${SSH_ENV}"
    chmod 600 "${SSH_ENV}"
    . "${SSH_ENV}" > /dev/null
}

if [ -f "${SSH_ENV}" ]; then
    . "${SSH_ENV}" > /dev/null
    #ps ${SSH_AGENT_PID} doesn't work under cywgin
    ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {
        start_agent;
    }
else
    start_agent;
fi

Обратите внимание, что / usr / bin / ssh-add; здесь намеренно отсутствует, сравнивая в исходный сценарий .

И добавить следующее в конце файла ~ / .ssh / config :

Host *
   AddKeysToAgent yes
0
ответ дан 5 January 2021 в 23:17

В Ubuntu 18.04 ssh-agent запускается при открытии сеанса X, он управляется в файле /etc/X11/Xsession.options:

# cat /etc/X11/Xsession.options
# $Id: Xsession.options 189 2005-06-11 00:04:27Z branden $
#
# configuration options for /etc/X11/Xsession
# See Xsession.options(5) for an explanation of the available options.
allow-failsafe
allow-user-resources
allow-user-xsession
use-ssh-agent
use-session-dbus
0
ответ дан 5 January 2021 в 23:17

Другие вопросы по тегам:

Похожие вопросы: