12.04LTS - не удалось открыть соединение с вашим агентом аутентификации
Я работаю над добавлением аутентификации ssh в новую версию Linode Ubuntu 12.04LTS. Я проследовал за их руководством к письму до того момента, когда мне нужно было вставить ssh в коробку с моим недавно добавленным ключом ssh, но вместо этого я получил:
"Error: agent admitted failure to sign using the key"
Что хорошо, руководство Ubuntu OpenSSH говорит, что все, что вам нужно сделать, это запустить
ssh-add
на сервере, и вы будете золотой. За исключением случаев, когда я делаю это, я получаю
Could not open a connection to your authentication agent.
Я дважды проверил процессы, и действительно, похоже, что ssh-agent уже запущен (фактически дважды, потому что я попробовал трюк eval, который вообще не работал):
alex@mybox:~$ ps aux | grep ssh
root 2645 0.0 0.1 49948 776 ? Ss Mar13 0:00 /usr/sbin/sshd -D
alex 16989 0.0 0.0 12492 324 ? Ss Mar13 0:00 ssh-agent
root 18986 0.0 0.7 73360 3564 ? Ss 09:03 0:00 sshd: alex [priv]
alex 19119 0.0 0.3 73360 1676 ? S 09:03 0:00 sshd: alex@pts/0
alex 19785 0.0 0.0 12492 316 ? Ss 09:59 0:00 ssh-agent
root 20026 0.0 0.7 73360 3568 ? Ss 10:02 0:00 sshd: alex [priv]
alex 20184 0.0 0.3 73360 1680 ? S 10:03 0:00 sshd: alex@pts/1
alex 20325 0.0 0.1 9384 924 pts/1 S+ 10:13 0:00 grep --color=auto ssh
Как я уже упоминал, подход eval сумел заставить ssh-add работать один раз, но когда я попытался снова войти в систему, система выдала ту же ошибку, которую я перечислил выше. У меня также сейчас есть два экземпляра ssh-agent.
Как правильно решить эту проблему?
4 ответа
Попробуйте запустить ssh-agent для текущей сессии bash. Вот что вам нужно сделать.
Проверьте ваш текущий env для ssh-agent PID:
env | grep ^SSH
Если вы этого не заметили, запустите ssh-agent для вашей текущей среды:
exec ssh-agent bash
Теперь попробуйте добавить ключ:
ssh-add
Убедитесь, что SSH_AGENT_PID
переменная окружения установлена в PID агента SSH, и это SSH_AUTH_SOCK
устанавливается на путь сокета агента (обычно в /tmp
каталог, например: /tmp/ssh-wpNhPp3007/agent.3007
)
ssh-add
можете использовать эти переменные, чтобы добавить свой ключ.
Вы также можете использовать следующий синтаксис:
ssh-agent sh -c 'ssh-add && echo Do some stuff here.'
Ваша проблема на клиенте, а не на сервере. Система, в которой работает sshd, не заботится о ssh-add / ssh-agent. Он просто проверяет, способна ли клиентская система создавать разрешающую цифровую подпись. Независимо от того, сделана эта подпись с помощью ssh, ssh-agent или даже смарт-карты, не имеет значения.
Если вы не используете один из стандартных файлов (но, например, ~/.ssh/id_rsa_newbox), вы должны указать либо ssh (-i ~/.ssh/id_rsa_newbox) or ssh-agent (
ssh-add ~ /.ssh / id_rsa_newbox`), чтобы использовать этот нестандартный файл.