2014-11-28 3 views
3

Я только что установил 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. Что происходит?! Это действительно озадачивает.

+0

Является ли '/ 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

+0

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

+0

@Jdamian. Вы совершенно правы. о вашем 2): я сделал опечатку. 'ssh -t ...' должен быть 'ssh-keygen -t ...'. Что касается 1), «пользователь» является просто фиктивным именем для моего фактического имени пользователя, которое я редактировал после копирования в мой вывод оболочки. Все было запущено от моего пользователя, до запуска экземпляра оболочки bash с правами root, и в этом случае пользователь переключился с «user» на «root». – DesAdams

ответ

1

Кажется, пользователь, с которым вы работаете, так как не имеет права на запись в местоположение сокета ssh-agent по умолчанию.

Это должно исправить вашу проблему:

ssh-agent -a ~/.ssh-agent.$$ 

Это указывает местоположение сокета с опцией -a как ~/.ssh-agent.$$, то есть, в вашем домашнем каталоге.

Проблема с разрешениями может быть вызвана чем-то вроде простых разрешений UNIX (то есть /tmp не может быть записана этим пользователем) или SELinux или что-то еще.

+0

Я пробовал ваше предложение, см. Мое редактирование. – DesAdams

0

После многих часов борьбы с этим, я, наконец, выследил источник (ы) моих проблем.

  1. Мой Umask был установлен совершенно неправильно: когда я настраивал мое окружение после установки, я случайно положил umask 755 в моем .bashrc; я имел в виду, что для моих прав доступа к файлам было 755, и в этом случае umask должен был быть установлен на 022 или 002 (я пошел с последним). Этот неправильный umask оказался корнем (хе-хе) всех моих ошибок разрешения: файлы и каталоги, создаваемые всеми различными командами SSH, создавались с неправильными разрешениями.
  2. Я пытался сделать ssh-add моим открытым ключом вместо своего личного ключа; Я не мог понять, почему в нем говорилось, что моя кодовая фраза была неправильной, несмотря на то, что я был на 100% уверен, что это правильно. Причина была в том, что пароль был для private ключ; открытый ключ не был защищен паролем, поэтому он попытался установить ssh-add и ввести пароль для него, что привело ко всем ошибкам «Bad passphrase».

Благодарим всех вас за помощь! Ты поставил меня на путь поиска решения, которое сработало для меня. После исправления этих ошибок я смог успешно запустить ssh-agent без доступа root и добавить приватный ключ SSH.

Смежные вопросы