Я только что установил Archbang и пытаюсь клонировать мой проект Git, который требует SSH-ключей.Почему ssh-agent нуждается в корневом доступе?
Я следовал руководству Github для успеха в прошлом, в блоках Ubuntu и RedHat, но по какой-то причине он не работает для меня в моей новой установке Arch.
Я успешно создан мой SSH открытый/закрытый ключ пары с этой командой:
ssh-keygen -t rsa -b 4096 -C "[email protected]"
Но когда я перехожу на запуске SSH агента и добавить свой открытый ключ, я столкнулся с проблемами.
[[email protected] ~]$ eval "$(ssh-agent -s)"
bind: Permission denied
unix_listener: cannot bind to path: /tmp/ssh-ZqYqSabxjZeA/agent.9328
Это успешно, однако, если я запускаю его как корень:
[[email protected] ~]$ eval "$(sudo ssh-agent -s)"
[sudo] password for user:
Agent pid 9146
Но я уверен, что я не хочу делать SSH вещи, как корень.
Продолжая вперед, когда я затем попытаться использовать ssh-add
, я получаю ошибки разрешений, а также, но в этот раз как обычный пользователь и корень:
[[email protected] ~]$ ssh-add .ssh/id_rsa.pub
Could not open a connection to your authentication agent.
[[email protected] ~]$ sudo ssh-add .ssh/id_rsa.pub
Could not open a connection to your authentication agent.
Так что теперь я действительно путают.
Я попытался открыть процесс bash как root, чтобы сделать это, но 1) Мне не нравится эта идея, и 2) она по-прежнему не работает, но на этот раз по другой причине:
[[email protected] ~]$ sudo ssh-agent -s
[[email protected] ~]# ssh-add .ssh/id_rsa.pub
Enter passphrase for .ssh/id_rsa.pub:
Bad passphrase, try again for .ssh/id_rsa.pub:
По какой-то причине это в корневой оболочке заставляет мою кодовую фразу ключа SSH отклоняться; Я пробовал это несколько раз, с простейшей фразой, поэтому я уверен, что я дал ей правильную кодовую фразу.
Я в затруднении. Мне действительно не нравится весь этот материал sudo
, и я не знаю, почему это кажется необходимым; Я проверил разрешения на каталог .ssh и его файлы, даже если удалить весь каталог и восстановить ключи, чтобы убедиться, что они не сгенерированы с неправильными разрешениями.
Может кто-нибудь, пожалуйста, помогите мне здесь? Что я делаю не так?
EDIT: В ответ на предложенные ответы, я попробовал это снова, используя место сокета внутри моего домашнего каталога. Таковы результаты:
[[email protected] ~]$ mkdir -m 700 ~/.ssh
[[email protected] ~]$ ssh-keygen -t rsa -b 4096 -C "[email protected]"
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/user/.ssh/id_rsa.
Your public key has been saved in /home/user/.ssh/id_rsa.pub.
...
[[email protected] ~]$ chmod 644 .ssh/id_rsa.pub && chmod 600 .ssh/id_rsa
[[email protected] ~]$ eval "$(ssh-agent -sa .ssh-agent.$$)"
Agent pid 1881
[[email protected] ~]$ ssh-add .ssh/id_rsa.pub
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for '.ssh/id_rsa.pub' are too open.
It is recommended that your private key files are NOT accessible by others.
This private key will be ignored.
На данный момент, я запутался, почему эти разрешения не являются приемлемыми, и о том, почему он считает, что мой открытым ключ закрытым ключ. Но я южусь, меняя разрешения на 600 и пытаясь добавить его снова.
[[email protected] ~]$ chmod 600 .ssh/id_rsa.pub
[[email protected] ~]$ ssh-add .ssh/id_rsa.pub
Enter passphrase for .ssh/id_rsa.pub:
Bad passphrase, try again for .ssh/id_rsa.pub:
А теперь я получил к подобному месту, как я был раньше: он не любит фразу, который я создал для моего ключа SSH. Что происходит?! Это действительно озадачивает.
Является ли '/ tmp' доступным только для root? Или он защищен как '777'? Он должен быть (https://wiki.archlinux.org/index.php/arch_filesystem_hierarchy#.2Ftmp:_Temporary_files). Или, может быть, он неправильно установлен? (https://wiki.archlinux.org/index.php/Tmpfs#Disable_automatic_mount) – VonC
1) Все ваши командные строки, выложенные выше, выполняются как пользователь 'arch' ... за исключением первого (создание пары ключей) которые мы не можем знать, кто их запускает. Что пользователь выполнил первую команду? либо пользователь 'arch', либо root? 2) Я не понимал, что никогда не использовал команду 'ssh' для создания пары ключей SSH; Я всегда использовал 'ssh-keygen'. Ты уверен? Параметры, используемые в вашей команде 'ssh', не соответствуют параметрам' ssh'. Прочтите [страницы руководства ssh] (http://www.openbsd.org/cgi-bin/man.cgi/OpenBSD-current/man1/slogin.1?query=ssh&sec=1) – Jdamian
@Jdamian. Вы совершенно правы. о вашем 2): я сделал опечатку. 'ssh -t ...' должен быть 'ssh-keygen -t ...'. Что касается 1), «пользователь» является просто фиктивным именем для моего фактического имени пользователя, которое я редактировал после копирования в мой вывод оболочки. Все было запущено от моего пользователя, до запуска экземпляра оболочки bash с правами root, и в этом случае пользователь переключился с «user» на «root». – DesAdams