Повторяющаяся ошибка "агент признал невозможность подписи с помощью ключа" с SSH без пароля
Одна из машин в моей сети (рабочая станция Mint 12, в актуальном состоянии) периодически переходит в плохое состояние, когда все исходящие SSH-соединения возвращаются к аутентификации по паролю с ошибкой "агент признал, что не подписал, используя ключ" вместо использования ключа на основе аутентификации, которая была настроена.
Как только он окажется в этом состоянии, он будет выходить из строя 100% времени для всех исходящих соединений. Входящая аутентификация на основе ключей, кажется, соединяется нормально. Я попытался удалить и восстановить пару ключей и перераспределить открытый ключ, но ошибка не исчезла.
Перезагрузка временно устранит ошибку, но она вернется через несколько дней. Кажется, не совпадает ни с каким конкретным событием / рабочим процессом, но я мог бы что-то упустить.
Кто-нибудь еще видел это?
1 ответ
"Агент" здесь ssh-agent
- программа, которая загружает закрытый ключ в память и хранит его для будущих подключений ssh, поэтому вам не нужно будет повторно вводить пароль. Похоже, что где-то вдоль линии, ему приказывают забыть ключ (вы зависаете на диск / гибернацию? Это может сделать это, чтобы предотвратить запись незашифрованного ключа на диск) или есть ошибка, которая заставляет его забыть ключ. В любом случае, ssh-add
должен позволить вам добавить ключ обратно к агенту.
Я совершенно уверен, что вы получите другое сообщение об ошибке, если ssh
не мог говорить с ssh-agent
по какой-то причине. Если ssh-add
говорит, что не может открыть соединение с вашим агентом аутентификации, тогда реальная проблема в том, что он перестал работать, или переменные среды, которые сообщают ssh
как связаться с агентом пропали без вести, или что файл сокета исчез. Если переменные среды $SSH_AUTH_SOCK
а также $SSH_AGENT_PID
оба установлены, когда это происходит (с echo $SSH_AGENT_PID
), убедитесь, что процесс ssh-agent, на который ссылается $SSH_AGENT_PID
все еще работает, и если так, то файл сокета в $SSH_AUTH_SOCK
все еще там. Может быть, у вас есть агрессивный /tmp
процесс очистки, который удаляет розетку.