Single sign-on для ssh своими руками

Шаг 4 — Отключение аутентификации по паролю на вашем сервере

Если вам удалось войти в ваш удалённый аккаунт на удалённом хосте по SSH без ввода пароля, вы успешно настроили аутентификацию по ключу SSH для вашего аккаунта. Однако возможность входить на сервер с использованием пароля всё есть активна, что означает, что ваш сервер уязвим для атак с перебором пароля (brute-force attacks).

Перед тем как следовать дальнейшим инструкциям, убедитесь, что вы настроили аутентификацию по ключу SSH для вашего пользователя или для пользователя с привилегиями на вашем сервере

После завершения описанных далее процедур вход по паролю станет недоступен, поэтому очень важно убедиться, что у вас остаётся доступ к вашему серверу

Как только вы убедитесь, что аккаунт вашего удалённого пользователя имеет привилегии администратора, войдите на сервер с использованием аутентификации по ключу SSH, используя либо аккаунт , либо аккаунт пользователя с привилегиями . Далее откройте конфигурационный файл демона SSH:

Внутри файла найдите директиву . Она может быть закомментирована. Раскомментируйте её при необходимости и установите её значение в “no”. Это отключит возможность входа на сервер по паролю.

/etc/ssh/sshd_config

Сохраните и закройте файл нажав + , затем для подтверждения сохранения файла, а далее для выхода из текстового редактора nano. Для применения внесённых изменений нам необходимо перезапустить сервис :

В качестве меры предосторожности откройте новое окно терминала и проверьте, что соединение по SSH работает корректно, перед тем, как закрывать текущую сессию:

После проверки работоспособности SSH соединения, вы можете закрыть все открытые сессии с сервером.

Теперь демон SSH на вашем сервере с Ubuntu работает только с ключами SSH. Аутентификация по паролю полностью отключена.

Формат файла ssh_known_hosts

В файлах /etc/ssh/ssh_known_hosts и ~/.ssh/known_hosts хранятся открытые ключи всех машин, с которыми когда-либо устанавливалась связь. Глобальный файл должен быть подготовлен администратором (это необязательно), пользовательский файл поддерживается автоматически: каждый раз, когда поступает запрос на соединение от неизвестной машины, её ключ автоматически заносится в пользовательский файл.

Каждая строка в этом файле содержит следующие поля: имена хостов, битность, порядок, модуль, комментарий. Поля разделены пробелами.

Имена хостов — это разделённый запятыми список шаблонов (символы подстановки — «*» и «?»); каждый шаблон сопоставляется с каноническим именем машины (при аутентификации клиента) или с именем, которое указано пользователем (при аутентификации сервера). Этот шаблон может также быть предварён знаком «!» для обозначения отрицания: если имя машины соответствует отрицаемому шаблону, оно будет отвергнуто (этой строкой) даже если оно соответствует другому шаблону в этой же строке. Также можно, заключив имя хоста или IP-адрес в квадратные скобки «» и «», через «» указать нестандартный порт.

Вместо имён хостов можно записывать их хэши. Это позволит скрыть их от злоумышленника в случае попадания файла в его руки. Для различия хэшей от имён хостов первые предваряются символом «|». На одной строке может быть не больше одного хэша, операция отрицания в этом случае не доступна.

Разрядность, порядок и модуль копируются из ключа хоста RSA, например, /etc/ssh/ssh_host_key.pub. Необязательное поле комментария занимает всю оставшуюся часть строки и игнорируется.

Комментариями также считаются пустые и строки начинающиеся с «#».

Идентификация машины принимается, если любая совпавшая строка содержит правильный ключ. Таким образом, можно (хотя это не рекомендуется) иметь несколько строк или различных ключей для одного и того же хоста. Это неизбежно случается при помещении в файл кратких форм имён хостов из различных доменов. В файлах может содержаться противоречивая информация. Идентификация принимается, если адекватная информация имеется в любом из них.

Примечание! Заметьте, что строки в этих файлах, обычно имеют длину в несколько сотен символов и, очевидно, не стоит вводить имена хостов вручную. Вместо этого их можно сгенерировать при помощи сценария оболочки или взять из файла /etc/ssh/ssh_host_key.pub, добавив в начале имя хоста.

Пример файла ssh_known_hosts:

# допустимы явные комментарии только на всю строку
closenet       192.0.2.53 1024 37 159...93 closenet.example.net
cvs.example.net,192.0.2.10 ssh-rsa AAAA1234 =
# хэш имени хоста
|1|JfKTdBh7rNbXkVAQCRp4OQoPfmI=|USECr3SWf1JUPsms5AqfD5QfxkM= ssh-rsa
AAAA1234 =

Использование ключа

Ввод пароля для подключения через SSH — раздражающая процедура. У меня почти никогда не получалось ввести его правильно с первого раза. Поэтому я начал искать информацию о том, как подключиться к серверу через SSH без пароля. Простое и безопасное решение — использование ключа. Почему это безопаснее? Потому что пароль можно подобрать. Чтобы исключить такую вероятность, многие пользователи выбирают авторизацию с помощью ключа. 

Суть процедуры в формировании двух ключей: публичного и приватного. Первый копируется на сервер, а второй остается на компьютере пользователя и не передается по сети. В таком случае пароль при подключении не требуется. Когда вы подключаетесь к серверу через SSH, публичный ключ взаимодействует с приватным и открывает доступ к удаленному управлению.

Генерирование ключа и подключение на Windows

Для удобства используем программу PuTTy. Вместе с ней устанавливается утилита PuTTYgen — в ней можно сгенерировать публичный и приватный ключи.

  1. Запустите программу PuTTYgen.
  2. Нажмите на кнопку Gengerate.
  3. Водите курсором мышки по рабочему столу, чтобы сгенерировать случайные значения ключей.
  4. Нажмите на кнопку Save private key, чтобы сохранить на жестком диске приватный ключ. Место хранения может быть любым — его нужно указать в параметрах PuTTY. Сделаем это позже. 
  5. Скопируйте публичный ключ в буфер обмена (Ctrl + C) и закройте генератор ключей.

Теперь нужно перенести публичный ключ на сервер. Запустите программу PuTTY и подключитесь к серверу с помощью пароля. Затем последовательно введите следующие команды:

mkdir ~/.ssh

chmod 0700 ~/.ssh

touch ~/.ssh/authorized_keys

chmod 0644 ~/.ssh/authorized_keys

Эти команды создают на сервере папку и файл для хранения ключей, а также ограничивают к ним доступ — получить его может только владелец.

Следующий шаг — вставка публичного ключа из буфера обмена в файл authorized_keys. Для этого используется команда cat > .ssh/authorized_keys. После ввода команды щелкните по окну терминала правой кнопкой, чтобы вставить скопированный ранее публичный ключ. Для завершения ввода нажмите на сочетание клавиш Ctrl+D.

Вернитесь в настройки PuTTY. Перейдите в раздел Connection — SSH — Auth. Нажмите на кнопку Browse и укажите путь к приватному ключу, который вы ранее сохранили на жестком диске.

Теперь для подключения к серверу через SSH пароль не нужен — достаточно указать логин и IP-адрес сервера.

Генерирование ключа и подключение на Linux и macOS

Теперь посмотрим, как подключиться через SSH ключи на Linux и macOS. 

  1. Запустите терминал на локальном компьютере.
  2. Выполните команду ssh-keygen, чтобы сгенерировать ключи.
  3. Нажмите на Enter, чтобы сохранить ключи.

Генератор предложит также задать кодовую фразу для ключа. Это дополнительная мера безопасности: если кто-то получит доступ к вашей локальной машине, то все равно не сможет подключиться к серверу через SSH. Минус один — вам тоже придется постоянно вводить ключевую фразу. Можно отказаться от этой меры защиты, просто нажав на клавишу Enter. 

На этом процедура создания ключей завершена. Файлы d_rsa (приватный ключ) и id_rsa.pub (публичный ключ) хранятся в папке ~/.ssh/.  Осталось скопировать открытую часть ключа на сервер.

  1. Вернитесь в терминал.
  2. Выполните команду ssh-copy-id [email protected], где root — логин для подключения к серверу по SSH, а 185.104.114.90 — IP-адрес или хост сервера.

После выполнения этой команды публичный ключ будет скопирован на сервер. Теперь вы можете подключаться к удаленной машине с помощью логина и IP-адреса — например, ssh [email protected]. Ключи будут сопоставляться автоматически.

Отключение запроса пароля

Суть приватных ключей в том, что они хранятся на локальных компьютерах. Если вы попытаетесь подключиться к серверу с другой машины, на которой нет ключа, то снова увидите запрос на ввод пароля. Чтобы авторизоваться можно было только по ключу, запретите использование пароля.

  1. Подключитесь к удаленному серверу.
  2. Выполните команду sudo nano /etc/ssh/sshd_config. Файл sshd_config откроется во встроенном текстовом редакторе. 
  3. Найдите строку PasswordAuthentication yes и измените ее на PasswordAuthentication no.
  4. Сохраните изменения и перезапустите службу SSH командой sudo service ssh restart.

Авторизация по паролю отключена. Теперь подключиться к серверу можно только с помощью пары ключей.

Шаг 4: отключение авторизации с использованием пароля

Если вы смогли подключиться по SSH без использования пароля, это значит, что вы корректно настроили авторизацию с использованием ключей. Однако возможность подключиться к серверу при помощи пароля все еще существует, а значит, сервер все еще может подвергнуться брутфорс-атакам.

Перед выполнением дальнейших действий вам нужно убедиться, что у вас настроена авторизация с использованием ключей для суперпользователя — но будет даже лучше, если вы настроите авторизацию для пользователя с sudo-привилегиями

Крайне важно убедиться в том, что в случае чего вы сможете получить административный доступ

Теперь подключитесь к серверу, используя ключи, и откройте конфигурационный файл демона SSH:

$ sudo nano /etc/ssh/sshd_config

Внутри файла найдите директиву PasswordAuthentication. Если она закомментирована, раскомментируйте ее и поставьте значение “no”:

...
PasswordAuthentication no
...

Сохраните и закройте файл, а затем перезапустите sshd:

$ sudo systemctl restart ssh

Перед закрытием сессии откройте терминал в новом окне и протестируйте, что подключение через SSH работает корректно:

$ ssh имя_пользователя@удаленный_хост

Если все хорошо, то все сессии на сервере можно завершить.

Теперь у вас настроен доступ при помощи SSH-ключей, а доступ с использованием пароля отключен.

Шаг 2: копирование ключа на сервер

Самый быстрый способ скопировать публичный ключ — это использовать утилиту ssh-copy-id. Этот способ простой и поэтому самый предпочтительный из всех существующих. Если на вашей машине нет возможности использовать эту утилиту, воспользуйтесь другим способом, о котором будет рассказано ниже.

Копирование с использованием ssh-copy-id

ssh-copy-id по умолчанию есть во многих операционных системах, так что, скорее всего, у вас она тоже есть. Для того, чтобы использовать этот способ, у вас должен быть настроен SSH-доступ на сервер с использованием пароля.

Далее вам нужно будет указать удаленный хост, к которому вы хотите подсоединиться, и пользовательский аккаунт, который вы используете для авторизации с паролем. Синтаксис команды:

$ ssh-copy-id имя_пользователя@удаленный_хост

Вы можете увидеть следующее сообщение:

The authenticity of host '203.0.113.1 (203.0.113.1)' can't be established.
ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe.
Are you sure you want to continue connecting (yes/no)? yes

Это значит, что локальный компьютер не узнает удаленный хост (такое происходит, когда вы первый раз подключаетесь к новому хосту). Просто напишите “yes” и нажмите Enter.

Далее утилита просканирует аккаунт, чтобы найти ключ id_rsa.pub, который был создан ранее. Как только ключ будет найден, вам нужно будет ввести пароль для удаленного пользователя:

/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
[email protected]'s password:

Введите пароль и нажмите Enter. Утилита подключится к удаленному хосту и скопирует содержимое ~/.ssh/id_rsa.pub в файл authorized_keys, который будет находиться в домашней директории аккаунта  ~/.ssh.

Вы должны увидеть вот такой вывод:

Number of key(s) added: 1
Now try logging into the machine, with:   "ssh '[email protected]'"
and check to make sure that only the key(s) you wanted were added.

Итак, ключ был скопирован, и вы можете переходить к шагу 3.

Копирование ключа вручную

Если вы не можете использовать ssh-copy-id (или у вас нет возможности подключиться к серверу через SSH с использованием пароля), то вам нужно будет выполнить процесс вручную.

Сначала выведите содержимое ключа id_rsa.pub:

$ cat ~/.ssh/id_rsa.pub

Вывод будет выглядеть примерно вот так:

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCqql6MzstZYh1TmWWv11q5O3pISj2ZFl9HgH1JLknLLx44+tXfJ7mIrKNxOOwxIxvcBF8PXSYvobFYEZjGIVCEAjrUzLiIxbyCoxVyle7Q+bqgZ8SeeM8wzytsY+dVGcBxF6N4JS+zVk5eMcV385gG3Y6ON3EG112n6d+SMXY0OEBIcO6x+PnUSGHrSgpBgX7Ks1r7xqFa7heJLLt2wWwkARptX7udSq05paBhcpB0pHtA1Rfz3K2B+ZVIpSDfki9UVKzT8JUmwW6NNzSgxUfQHGwnW7kj4jp4AT0VZk3ADw497M2G/12N0PPB5CnhHf7ovgy6nL1ikrygTKRFmNZISvAcywB9GVqNAVE+ZHDSCuURNsAInVzgYo9xgJDW8wUw2o8U77+xiFxgI5QSZX3Iq7YLMgeksaO4rBJEa54k8m5wEiEE1nUhLuJ0X/vh2xPff6SQ1BL/zkOhvJCACK6Vb15mDOeCSq54Cr7kvS46itMosi/uS66+PujOO+xt/2FWYepz6ZlN70bRly57Q06J+ZJoc9FfBCbCyYH7U/ASsmY095ywPsBo1XQ9PqhnN1/YOorJ068foQDNVpm146mUpILVxmq41Cj55YKHEazXGsdBIbXWhcrRf4G2fJLRcGUr9q8/lERo9oxRm5JFX6TCmj6kmiFqv+Ow9gI0x8GvaQ== demo@test

Подключитесь к удаленному хосту любым доступным способом.

Теперь надо создать директорию ~/.ssh. Введите команду ниже (если директория уже существует, то ничего не произойдет):

$ mkdir -p ~/.ssh

Теперь вы можете создавать или изменять файл authorized_keys внутри этой директории. Что нужно сделать: добавьте содержимое файла id_rsa.pub в конец файла authorized_keys (создав его, если он отсутствует):

$ echo содержимое_ключа >> ~/.ssh/authorized_keys

Наконец, нужно убедиться, что директория ~/.ssh и файл authorized_keys имеют правильные права доступа:

$ chmod -R go= ~/.ssh

Если вы используете аккаунт суперпользователя для того, чтобы установить ключи для пользовательского аккаунта, важно, чтобы владельцем директории ~/.ssh был этот пользователь (а не суперпользователь):

$ chown -R имя_пользователяимя_пользователя ~/.ssh

Теперь нужно попробовать подключиться к серверу без использования пароля.

Авторизация по ключам в OpenSSH server for Windows

Windows не Linux, а Linux не Windows. В принципе авторизация по ключам в OpenSSH server for Windows работает аналогично Linux/BSD, но с некоторыми существенными отличиями.

Если в конфигурации сервера по умолчанию используется запись вида «AuthorizedKeysFile .ssh/authorized_keys», то файл авторизированных ключей authorized_keys сервер будет искать в домашнем каталоге пользователя, в директории .ssh.

При такой конфигурации OpenSSH server for Windows мы можем столкнутся с ошибкой SSH клиента «OpenSSH Server refused our key», а системный журнал получим сообщения:

Вероятно, что ошибку SSH клиента «OpenSSH Server refused our key» будем получать неизбежно и постоянно если будем пытаться использовать персональный файл «.ssh/authorized_keys» для каждого пользователя!

Какие права на домашний каталог пользователя не пробовал ставить, всё равно в SSH клиенте получаю «OpenSSH Server refused our key», а в системном журнале «sshd: PID 1712: Authentication refused: bad ownership or modes for directory /home/user» — это вероятно связано разделением прав в cygwin окружении, т.е. не при каких условиях не даёт читать домашний каталог пользователя, пока тот не пройдёт авторизацию…

Единственным выходом в этом случае является использование общего, для всех пользователей, файла authorized_keys — «AuthorizedKeysFile /etc/ssh/authorized_keys«.

Каждый пользователь может создавать свои собственные ключи, в своём домашнем каталоге:

Но, для разрешения доступа по ключам только администратор должен добавить содержимое публичного ключа (id_rsa.pub) каждого пользователя в /etc/ssh/authorized_keys, ну, и разумеется не забываем добавить пользователя в /etc/passwd.

Ссылки по теме:

Chapter 8: Using public keys for SSH authentication

Авторизация SSH по ключам

Намного безопаснее, удобнее и правильнее будет настроить ssh авторизацию без пароля. Для этого будет использоваться авторизация по ключу.

Итак, вот инструкция:

  1. Распаковываем архив, открываем PUTTYGEN
    :

    Открываем PUTTYGEN (PuTTY Key Generator)

  2. Вводим и выбираем всё как на скриншоте:
    и ключ длиной
    и жмём Generate
    Во время генерации ключей водим мышкой по специальному полю под статусной строкой, чтобы пошла генерация ключей (она использует набор из координат мыши)

    Генерируем ключи

  3. Теперь нужно заполнить
    (это пароль для доступа к приватному ключу). Заполнять не обязательно, но его наличие повысит безопасность, так как любой, кто имеет доступ к приватному ключу, сможет с его помощью авторизоваться на сервере по ssh:

    Сохраняем ключи

  4. Сохраним приватный ключ где-нибудь в надёжном месте —
    . Назовём его, к примеру,
  5. А вот публичный ключ нужно сохранить на сервере, куда устанавливаем доступ —
    Назовём его
    . Авторизуемся по ssh по паролю и переходим в директорию пользователя, под которым будет происходить авторизация.

    Итак, копируем файл
    в
    . Далее нужно импортировать данные в файл

    ssh-keygen -i -f /root/.ssh/sheensay.ru.pub >> /root/.ssh/authorized_keys

    После
    можно удалить

  6. Осталось настроить подключение. Я пользуюсь Far Manager в связке с плагином WinSCP.

    Открываем Far Manager, Alt
    + F1
    , выбираем
    , далее Shift
    + F4
    и настроим наше подключение. Допустим, мы сохранили приватный файл в
    При настройке нужно будет указать IP или доменное имя на нём для доступа к серверу, порт, на котором висит SSH, имя пользователя и путь к приватному файлу-ключу

    Настройка подключения по SSH

  7. Подключаемся. Если при генерации ключей вы вводили пароль, то в этом случае при подключении у вас будет запрашивать пароль к приватному файлу.

Подключение настроено. Если что-то сделали не так, при авторизации появится ошибка
, то есть Сервер не принял наш ключ
. В этом случае пройдитесь по всем пунктам последовательно и поищите ошибку

Отключить авторизацию по паролю

Теперь, когда всё настроено, совсем не лишним будет отключить авторизацию по паролю. Для этого внесём изменения в конфигурационный файл:

PasswordAuthentication no

Как создать ключи SSH?

Сначала необходимо создать ключи ssh для аутентификации на локальном сервере. Для этого существует специальная утилита ssh-keygen, которая входит в набор утилит OpenSSH. По умолчанию она создает пару 2048 битных RSA ключей, которая подойдет не только для SSH, но и для большинства других ситуаций.

И так, генерация ключей ssh выполняется командой:

Утилита предложит вам выбрать расположение ключей. По умолчанию ключи располагаются в папке ~/.ssh/. Лучше ничего не менять, чтобы все работало по умолчанию и ключи автоматически подхватывались. Секретный ключ будет называться id_rsa, а публичный id_rsa.pub.

Затем утилита предложит ввести пароль для дополнительного шифрования ключа на диске. Его можно не указывать, если не хотите. Использование дополнительного шифрования имеет только один минус — необходимость вводить пароль, и несколько преимуществ:

  • Пароль никогда не попадет в сеть, он используется только на локальной машине для расшифровки ключа. Это значит что перебор по паролю больше невозможен.
  • Секретный ключ хранится в закрытом каталоге и у клиента ssh нет к нему доступа пока вы не введете пароль;
  • Если злоумышленник хочет взломать аутентификацию по ключу SSH, ему понадобится доступ к вашей системе. И даже тогда ключевая фраза может стать серьезной помехой на его пути.

Но все же, это необязательное дополнение и если не хотите, то вы можете просто нажать Enter. Тогда доступ по ключу ssh будет выполняться автоматически и вам не нужно будет что-либо вводить.

Теперь у вас есть открытый и закрытый ключи SSH и вы можете использовать их для проверки подлинности. Дальше нам осталось разместить открытый ключ на удаленном сервере.

Особенности SSH протокола

Протокол SSH разработан на коммерческой основе, также есть и бесплатный вариант OpenSSH, который особенно популярный среди веб-разработчиков.

Выделим основные преимущества s.s.h. протокола:

  • вы можете работать удаленно на компьютере через командную оболочку.
  • специальные алгоритмы обеспечивают надежное шифрование.
  • SSH — универсальное решение, которое дает возможность передачи любого протокола Сети. Это в свою очередь позволяет передавать по защищенному каналу видео и аудио формат файлов. 
  • сжимает данные для их дальнейшего надежного шифрования и передачи. 
  • качественно защищает канал передачи данных от возможных сторонних подключений с последующим перехватом данных.

SSH — универсальное решение, которое дает возможность передачи любого протокола Сети.

Использует

Пример туннелирования приложения X11 через SSH: у пользователя josh есть SSHed с локальной машины foofighter на удаленную машину tengwar для запуска xeyes .

Вход в OpenWrt через SSH с помощью PuTTY, работающего в Windows .

SSH — это протокол, который можно использовать для многих приложений на многих платформах, включая большинство вариантов Unix ( Linux , BSD, включая MacOS от Apple и Solaris ), а также Microsoft Windows . Для некоторых из перечисленных ниже приложений могут потребоваться функции, которые доступны только или совместимы с определенными клиентами или серверами SSH. Например, использование протокола SSH для реализации VPN возможно, но в настоящее время только с сервером OpenSSH и реализацией клиента.

Для входа в оболочку на удаленном хосте (заменяет Telnet и rlogin )
Для выполнения одной команды на удаленном хосте (замена rsh )
Для настройки автоматического (безпарольного) входа на удаленный сервер (например, с помощью OpenSSH )
В сочетании с rsync для эффективного и безопасного резервного копирования, копирования и зеркалирования файлов
Для переадресации порта
Для туннелирования (не путать с VPN , которая пакеты между разными сетями или два широковещательных домена в один).
Для использования в качестве полноценного зашифрованного VPN

Обратите внимание, что только сервер и клиент OpenSSH поддерживают эту функцию.
Для пересылки X с удаленного хоста (возможно через несколько промежуточных хостов)
Для просмотра веб-страниц через зашифрованное прокси-соединение с клиентами SSH, которые поддерживают протокол SOCKS .
Для безопасного монтирования каталога на удаленном сервере в качестве файловой системы на локальном компьютере с использованием SSHFS .
Для автоматического удаленного мониторинга и управления серверами с помощью одного или нескольких механизмов, описанных выше.
Для разработки на мобильных или встроенных устройствах, поддерживающих SSH.
Для защиты протоколов передачи файлов.

Протоколы передачи файлов

Протоколы Secure Shell используются в нескольких механизмах передачи файлов.

  • Безопасное копирование (SCP), эволюционировавшее из протокола RCP поверх SSH.
  • rsync , более эффективный, чем SCP. Обычно работает через SSH-соединение.
  • Протокол передачи файлов SSH (SFTP), безопасная альтернатива FTP (не путать с FTP через SSH или FTPS )
  • Файлы, передаваемые по протоколу оболочки (он же FISH), выпущенному в 1998 году, который эволюционировал из команд оболочки Unix по SSH.
  • Протокол Fast and Secure Protocol (FASP), также известный как Aspera , использует SSH для управления и порты UDP для передачи данных.

ssh-add

Команда ssh-add добавляет ключ в ssh-agent.

Пример:

$ ssh-add ~/.ssh/key

1 $ ssh-add ~/.ssh/key

Параметры:

-l – список добавленных ключей

-d – удалить ранее добавленный ключ

-D – удалить ВСЕ добавленные ключи

Чтобы ssh (и git, например) всегда добавлял ключ в запущенный ssh-agent без явного ручного вызова ssh-add, нужно добавить параметр
AddKeysToAgent в
~/.ssh/config со значениме yes, confirm или ask:

$ echo «AddKeysToAgent yes» > ~/.ssh/config

1 $ echo «AddKeysToAgent yes» > ~/.ssh/config

Проверка:

$ head -1 ~/.ssh/config
AddKeysToAgent yes

1
2

$ head -1 ~/.ssh/config
AddKeysToAgent yes

Старые версии Windows (без OpenSSH)

Создание SSH-ключей

Запустите программу, в открывшемся окне выберите «Type of key — SSH-2 RSA и нажмите «Generate».

Пока создается ключ, водите мышью в хаотичном порядке в пространстве под строкой загрузки для генерации случайных значений.
После того, как ключ будет создан, в окне программы вы сможете задать «Key passphrase» (кодовую фразу) для ключа. Это необязательно, вы можете оставить строку пустой

Если вы решите задать кодовую фразу, обратите внимание, что ее потребуется вводить при каждой авторизации по ключу.
Далее сохраните созданные ключи, нажав на кнопки «Save public key» и «Save private key», например, под именами id_rsa.pub и mykey.ppk. Также скопируйте и сохраните в любом текстовом файле содержимое окна «Public key for pasting…» — оно потребуется при копировании созданного ключа на сервер.

На этом процедура создания ключей завершена.

Копирование ключей на сервер

  1. Подключитесь к серверу по SSH и выполните команду для создания на сервере директории и файла для хранения ключей:

    mkdir ~/.ssh
    
    chmod 0700 ~/.ssh
    
    touch ~/.ssh/authorized_keys
    
    chmod 0644 ~/.ssh/authorized_keys
  2. Откройте созданный файл с помощью текстового редактора:

    nano ~/.ssh/authorized_keys
  3. Вставьте в него скопированный на предыдущем шаге текст public key из окна PuTTYgen и сохраните файл.
  4. Запустите pageant — его иконка появится в трее. Щелкните по ней правой кнопкой мыши и выберите Add Key.
  5. В открывшемся окне укажите путь к приватному ключу mykey.ppk, сохраненному ранее, и нажмите Open. Если при создании ключа вы указывали кодовую фразу, pageant запросит ее на данном этапе.
  6. Для проверки работы авторизации по ключу снова запустите утилиту PuTTY, подключитесь к вашему серверу и введите свой логин. Если все настроено корректно, вы увидите подобный вывод в окне консоли:

    Authenticating with public key "rsa-key-20151220" from agent
Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Ваша ОС
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: