Страницы

Поиск по вопросам

понедельник, 24 февраля 2020 г.

Запуск ssh-agent на debian

#debian #ssh


На удаленном сервере для развертывания кода с BitBucket используем защишенное соединение
иаутентификацию по ssh ключам. Ксамому серверу подключаюсь через putty (с win10 сижу),
и каждый раз приходится заново запускать ssh-agent командой eval $(ssh-agent) и добавлять
нужные ключи. Посмотрел в запущенные процессы, все ранее запущенные ssh-agent'ы висят
в памяти, но если разорвать соединение с сервером и затем снова открыть, ssh-agent
снова недоступен. Подскажи в чем может быть проблема?

devloop@s05657c43:~# ssh-agent                                                  
                                                              
SSH_AUTH_SOCK=/tmp/ssh-m8EJNB3MFimr/agent.13061; export SSH_AUTH_SOCK;          
                                                           
SSH_AGENT_PID=13062; export SSH_AGENT_PID;                                      
                                                           
echo Agent pid 13062;

devloop@s05657c43:~$ ssh-add .ssh/devloop                                       
                                                           
Could not open a connection to your authentication agent.

    


Ответы

Ответ 1



сам факт запуска процесса ssh-agent на отдалённой машине уже намекает на то, что вы, вероятно, используете его не по назначению. цитата из man ssh-agent: The idea is that the agent is run in the user's local PC, laptop, or terminal. Authentication data need not be stored on any other machine, and authentication passphrases never go over the network. мой вольный перевод: идея в том, что ssh-agent запускается на локальном компьютере. чтобы никакие аутентификационные данные не нужно было хранить на другой машине, и никакие пароли не передавались по сети. судя по этому фрагменту: $ ssh-add .ssh/devloop вы хотите с первой отдалённой машины аутентифицироваться на каких-то других отдалённых машинах по ключу, хранящемуся на удалённой машине (в файле ~/.ssh/devloop). в таком случае вам нет смысла запускать на этой отдалённой машине процесс ssh-agent. для того, чтобы аутентифицироваться на других машинах с помощью этого ключа, можете воспользоваться любым из перечисленных вариантов: переименуйте файл ~/.ssh/devloop в ~/.ssh/id_rsa. этот вариант не подойдёт, если такой файл уже есть и его содержимое требуется вам для каких-то других целей. указывайте явно этот файл при подключении: $ ssh -i ~/.ssh/devloop другая-отдалённая-машина добавьте в начало файла ~/.ssh/config строку: identityfile ~/.ssh/devloop тогда программа ssh будет пытаться использовать и этот файл при аутентификации. если этот файл требуется использовать только для аутентификации лишь на нескольких определённых машинах, тогда лучше вместо указанной строки добавить в конец файла ~/.ssh/config секцию: host машина1 машина2 машина3 identityfile ~/.ssh/devloop но если я неправильно угадал, и вам на самом деле необходим процесс ssh-agent, то лучше запускать его в качестве «прослойки» (как он собственно, и используется в современных дистрибутивах), т.е. сразу указывать при подключении команду вида ssh-agent оболочка, примерно так: $ ssh -t отдалённая-машина ssh-agent bash опция -t здесь необходима для того, чтобы был отведён tty (если не указывать команду, т.е., инициировать запуск оболочки, то tty отводится автоматически). а ещё, пожалуй, лучше будет использовать терминальный мультиплексор (screen, tmux и т.п.), который, кстати, тоже можно запускать с «прослойкой» в виде ssh-agent, примерно так: $ ssh -t отдалённая-машина ssh-agent screen p.s. и, да, вопрос не несёт в себе никакой дистрибутивной специфики, а касается лишь конкретно клиента openssh.

Ответ 2



Если вы работаете на локальной машине под windows 10 и хотите подключиться к другой машине при помощи putty -- то ключ должен быть запущен на вашей машине. Для этого в комплекте с putty идёт программа pageant (putty agent), который тихо свернётся в трею и будет там находиться. Программа putty умеет пробрасывать ключ на удалённую машину, поэтому каждый раз, как вы будете подключаться к удалённой машине -- будет запускать ssh-agent и давать ему ключ с машины windows 10. Проверьте настройку Allow agent forwarding в putty на закладке Connection - SSH - Auth И вообще все правильные программы под windows умеют форвардинг агента, например winscp: Так вот, если вы подключаетесь к какой-нибудь *nix-машине, то putty будет пробрасывать ключи на эту машину (в /tmp кидает приватный ключ) Есть и более продвинутые схемы, когда вы подключаетесь с одной машины на другую и пытаетесь подключиться к третьей, при этом на второй не остаётся даже ключа (если есть подозрение, что машина скомпрометирована). Подробнее можно почитать в конце этой статьи: https://habrahabr.ru/post/122445/ Вообще, при правильной настройке форвардинга нет разницы, сидите вы на windows машине или на linux -- всё будет примерно одинаково делаться. Поскольку не совсем понятно, нужно ли вам дальше с линункс-машины дальше куда-то идти -- оставлю на всякий случай упоминание: если вы хотите с windows 10 пробросить ключ в linux-машину и с неё дальше пробрасывать авторизацию -- то читайте про настройку в ~/.ssh/config проброса авторизации: Host * ForwardAgent yes

Комментариев нет:

Отправить комментарий