Как настроить ключи SSH в системе Linux / Unix

Я недавно прочитал что ключи SSH обеспечивают безопасный способ входа на сервер под управлением Linux и Unix. Как настроить ключи SSH в системах на базе Linux или Unix? Как мне настроить аутентификацию с открытым ключом в SSH для Linux/Unix?

Подробности руководства
Сложность Легко (rss)
Права root Нет
Требования Клиент OpenSSH и сервер
Время 10 м

На этой странице объясняется открытый ключ и показано, как настроить ключи SSH на Linux или Unix-подобном сервере. Я предполагаю, что вы используете Linux или Unix-подобный сервер и клиент со следующим программным обеспечением:

  • SSHD-сервер OpenSSH
  • SSH-клиент OpenSSH и его друзья в Linux (Ubuntu, Debian, {Free, Open, Net} BSD , RHEL, CentOS, MacOS/OSX, AIX, HP-UX и т. Д.).
Содержание
  1. Что такое аутентификация с открытым ключом?
  2. Как настроить ключи SSH
  3. Как настроить аутентификацию с открытым ключом?
  4. 1: Создайте пару ключей
  5. Необязательный синтаксис для продвинутые пользователи
  6. 2: Установите открытый ключ на удаленном сервере
  7. Примечание о добавлении открытого ключа на удаленном сервере
  8. 3: Протестируйте (введите команду на client1.cyberciti.biz)
  9. Что такое ssh-agent и ssh-add и как их использовать?
  10. 4: отключить вход на основе пароля на сервере
  11. 5: Как добавить или заменить кодовую фразу для существующего закрытого ключа?
  12. 6: Как мне сделать резервную копию p существующий закрытый/открытый ключ?
  13. Как мне защитить свои ключи ssh?
  14. Как создать и настроить файл конфигурации OpenSSH для создания ярлыков для серверов, к которым я часто обращаюсь?
  15. Создание нового ключа SSH и добавление это к ssh-агенту
  16. В этой статье
  17. Создание нового ключа SSH
  18. Добавление вашего SSH-ключа в ssh- агент
  19. Дополнительная литература
  20. Помогите нам сделать эти документы отличными!

Что такое аутентификация с открытым ключом?

Сервер OpenSSH поддерживает различные схемы аутентификации. Двумя наиболее популярными являются следующие:

  1. Аутентификация на основе паролей
  2. Аутентификация на основе открытого ключа. Это альтернативный метод защиты паролей. Этот метод рекомендуется на VPS, облачном, выделенном или даже домашнем сервере.

Как настроить ключи SSH

Шаги по настройке безопасного ssh ключи:

  1. Создайте пару ключей ssh ​​с помощью команды .
  2. Скопируйте и установите открытый ключ ssh с помощью команды на сервере Linux или Unix.
  3. Добавьте себя в учетную запись администратора sudo или группы wheel.
  4. Отключите пароль для входа в учетную запись root.
  5. Проверьте свой пароль без ключей ssh ​​для входа с помощью ssh user @ server-nam e command.

Давайте подробно рассмотрим все шаги.

Как настроить аутентификацию с открытым ключом?

Вы должны сгенерировать пару открытого и закрытого ключей. Например:

Рис.01: Наш пример настройки

Где,

  • server1.cyberciti.biz — вы храните свой открытый ключ на удаленных хостах, и у вас есть учетные записи на этом сервере на базе Linux/Unix. .
  • client1.cyberciti.biz — ваш закрытый ключ остается на настольном/портативном/компьютере (или локальном сервере), который вы используете для подключения к серверу server1.cyberciti.biz. Не передавайте и не передавайте свой личный файл кому-либо.

В методе, основанном на открытом ключе, вы можете входить в удаленные хосты и сервер и передавать им файлы без использования паролей вашей учетной записи. Не стесняйтесь заменять имена server1.cyberciti.biz и client1.cyberciti.biz на свои фактические настройки. Хватит разговоров, давайте настроим аутентификацию с открытым ключом. Откройте Терминал и введите следующие команды, если. Каталог ssh не существует:

  mkdir -p $ HOME/.sshchmod 0700 $ HOME/.ssh 

1: Создайте пару ключей

На компьютере (например, client1.cyberciti.biz) сгенерируйте пару ключей для протокола.

 ssh-keygen -t rsa 

Примеры выходных данных:

 Генерация пары открытого/закрытого ключей rsa. Введите файл, в который нужно сохранить  ключ (/Users/vivek/.ssh/id_rsa): введите кодовую фразу (пусто, если кодовая фраза отсутствует): введите ту же парольную фразу еще раз: ваша идентификационная информация была сохранена в/Users/vivek/.ssh/id_rsa. Ваш открытый ключ был сохранен  в/Users/vivek/.ssh/id_rsa.pub. Отпечаток ключа: 80: 5f: 25: 7c: f4: 90: aa: e1: f4: a0: 01: 43: 4e: e8: bc: f5 vivek  @ desktop01 Произвольное изображение ключа: + - [RSA 2048] ---- + |  оо ... +.  || .oo.  .ooo || o .o.  .  .o.  ||  о ... + о.  ||  o. =. = S ||  .  .Eo.  ||  ||  ||  | + ----------------- + 

Вам необходимо указать расположение и имя пары ключей. Я рекомендую вам использовать расположение по умолчанию, если у вас еще нет там другого ключа, например: $ HOME/.ssh/id_rsa. Вам будет предложено ввести кодовую фразу (пароль) для вашего закрытого ключа. Я предлагаю вам установить парольную фразу, когда будет предложено. Вы должны увидеть два новых файла в каталоге $ HOME/.ssh/:

  1. $ HOME/.ssh/id_rsa — содержит ваш закрытый ключ .
  2. $ HOME/.ssh/id_rsa.pub — содержит ваш открытый ключ.

Необязательный синтаксис для продвинутые пользователи

Следующий синтаксис определяет 4096 бит в RSA-ключ для создания (по умолчанию 2048):
$ ssh-keygen -t rsa -b 4096 -f ~/.ssh/vps-cloud.web-server.key -C "Мой ключ веб-сервера"
Где,

  • -t rsa : указывает тип создаваемого ключа. Возможные значения: «rsa1» для версии протокола 1 и «dsa», «ecdsa», «ed25519» или «rsa» для версии протокола 2.
  • -b 4096 : указывает количество битов в ключе для создания
  • -f ~/.ssh/ vps-cloud.web-server.key : указывает имя файла ключа.
  • -C "Мой ключ веб-сервера" : установить новый комментарий.

2: Установите открытый ключ на удаленном сервере

Используйте команду scp или ssh-copy-id, чтобы скопировать файл открытого ключа (например, $ HOME/.ssh/id_rsa.pub ) в свою учетную запись на удаленном сервере/хосте (например, nixcraft@server1.cyberciti.biz). Для этого введите следующую команду на вашем client1.cyberciti.biz:

 ssh-copy-id -i $ HOME/.ssh/id_rsa.pub user@server1.cyberciti.biz 

ИЛИ просто скопируйте открытый ключ на удаленном сервере как authorized_keys в каталог ~/.ssh/:

 scp $ HOME/.ssh/id_rsa.pub user@server1.cyberciti.biz  : ~/. ssh/authorized_keys 

Примечание о добавлении открытого ключа на удаленном сервере

В некоторых системах команда ssh-copy-id может не быть установлена, поэтому используйте следующие команды (при появлении запроса укажите пароль для учетной записи удаленного пользователя с именем vivek) для установки и добавления открытого ключа:

 ## Сначала создайте каталог .ssh на сервере ## ssh vivek@server1.cyberciti.biz "umask 077; test -d .ssh || mkdir .ssh" ## cat local id.rsa.pub файл и перенаправьте через ssh  для добавления открытого ключа на удаленном сервере ## cat $ HOME/.ssh/id_rsa.pub |  ssh vivek@server1.cyberciti.biz "cat >> .ssh/authorized_keys" 

3: Протестируйте (введите команду на client1.cyberciti.biz)

Синтаксис команды ssh следующий:

 ssh user@server1.cyberciti.bizssh user @ your-server-ip-addressssh -i  ~/.ssh/your-key user @ your-server-ip-address 

Или скопируйте текстовый файл с именем foo.txt:

 scp foo.txt user@server1.cyberciti.biz:/tmp/

Вам будет предложено ввести кодовую фразу. Чтобы избавиться от парольной фразы при каждом входе на удаленный хост, попробуйте команды ssh-agent и ssh-add.

Что такое ssh-agent и ssh-add и как их использовать?

Чтобы избавиться от парольной фразы для текущего сеанса, добавьте парольную фразу в ssh-agent, и вам не будет предложено ввести ее при использовании ssh или scp/sftp/rsync для подключения к хостам с вашим общедоступным ключ. Синтаксис следующий:

  eval $ (ssh-agent) 

Введите ssh-add , чтобы запросить у пользователя парольную фразу для закрытого ключа и добавить ее в список, поддерживаемый командой ssh-agent:

ssh-add

Введите кодовую фразу для закрытого ключа. Теперь попробуйте еще раз войти на user@server1.cyberciti.biz, и вам не будет предложено ввести пароль:

 ssh user@server1.cyberciti. biz 

Можно перечислить параметры открытого ключа всех идентификаторов с помощью -L :
ssh-add -L
Удаление всех закрытых ключей из ssh-агента может быть выполнено с помощью -D следующим образом:
ssh-add -D
Когда вы выходите из системы, убейте ssh-агент, запустите:
kill $ SSH_AGENT_PID
Вы также можете добавить что-то вроде нижеприведенного при запуске вашей оболочки, чтобы убить ssh-agent при выходе из системы:
trap "kill $ SSH_AGENT_PID" 0

4: отключить вход на основе пароля на сервере

Войдите на свой сервер, введите:

 ## клиентские команды ## eval $ (ssh-agent) ssh-addssh user@server1.cyberciti.biz 

Отредактируйте/etc/ssh/sshd_config на server1.cyberciti .biz с помощью текстового редактора, такого как nano или vim:

Предупреждение : убедитесь, что вы добавили себя в файлы sudoers. В противном случае вы не сможете позже войти в систему как root. Для получения дополнительной информации см. «Как добавить, удалить и предоставить права Sudo пользователям на сервере FreeBSD».

$ sudo vim/etc/ssh/sshd_config
ИЛИ напрямую перейти к строке PermitRootLogin с помощью текстового редактора vim:
$ sudo vim +/PermitRootLogin/etc/ssh/sshd_config
Найти PermitRootLogin и установите его следующим образом:

  PermitRootLogin нет 

Сохраните и закройте файл. Я собираюсь добавить пользователя с именем vivek в sudoers в Ubuntu Linux:
# adduser vivek
Наконец, перезагрузите/перезапустите сервер sshd, введите команду в соответствии с ваша версия Linux/Unix:

  ## CentOS/RHEL/Fedora (более старая версия) Linux server reload sshd ## sudo service sshd reload ## CentOS/RHEL/Fedora (последняя версия, т.е. на основе systemd) Linux server reload sshd ## sudo systemctl reload sshd ## Debian/Ubuntu  Сервер Linux (более старая версия) перезагрузка sshd ## sudo/etc/init.d/ssh reload ## Debian/Ubuntu Linux (последняя версия на основе systemd) перезагрузка сервера sshd ## sudo systemctl reload ssh ## Универсальный метод Unix для перезагрузки sshd ##  sudo kill -HUP `cat/var/run/sshd.pid`ORsudo kill -HUP $ (cat/var/run/sshd.pid)

5: Как добавить или заменить кодовую фразу для существующего закрытого ключа?

Чтобы изменить кодовую фразу, введите следующее команда:
ssh-keygen -p

6: Как мне сделать резервную копию p существующий закрытый/открытый ключ?

Просто скопируйте файлы на резервный сервер или внешний USB-накопитель/жесткий диск:

 ## Копирование файлов на домашний nas-сервер ## rsync -avr $ HOME/.ssh user@home.nas  -server:/path/to/encrpted/nas/partition/## Копирование файлов на USB-накопитель, смонтированный в/mnt/usb ## cp -avr $ HOME/.ssh//mnt/usb/backups/

Как мне защитить свои ключи ssh?

  1. Всегда используйте надежную парольную фразу.
  2. Не делитесь своими секретными ключами где-либо в Интернете и не храните их в небезопасном облачном хранилище.
  3. Ограничьте права учетной записи.

Как создать и настроить файл конфигурации OpenSSH для создания ярлыков для серверов, к которым я часто обращаюсь?

Для получения дополнительной информации см., как создать и использовать файл OpenSSH ssh_config.

Заключение

На этой странице объяснялось, как настроить ключи ssh для аутентификации. Для получения дополнительной информации см. Следующие ресурсы:

  • связка ключей: настройка безопасного доступа по SSH без пароля для сценариев резервного копирования
  • Ubuntu/Debian Linux Server Установить связку ключей SSH Диспетчер ключей для OpenSSH
  • Страницы руководства — ssh-keygen (1)
  • здесь домашняя страница проекта OpenSSH.

И Вот и все, ssh настроен с аутентификацией на основе открытого ключа для Linux или Unix-подобных систем.

🐧 Пожалуйста, поддержите мою работать на Patreon или за пожертвование.
🐧 Получите последние учебные материалы по Linux, Open Source и DevOps через:
  • RSS-канал или Еженедельная рассылка новостей по электронной почте
  • Поделиться в Twitter Facebook • 18 комментариев … добавьте один
Связанные руководства
  • Как настроить ключи SSH в RHEL 8
  • Linux/UNIX: создание ключей SSH
  • Команда удаления ключей SSH для Linux и Unix
  • Исправление: VIM исправляет клавиши ВВЕРХ и ВНИЗ, вставляя ABCD…
  • Linux генерирует ключи SSH RSA
  • Как разрешить вход root с одного IP-адреса с помощью ssh…
  • Mac OS X: удаление ключей SSH с помощью командной строки терминала
Категория Список команд Unix и Linux
Управление файлами cat
Брандмауэр Alpine Awall • CentOS 8 • OpenSUSE • RHEL 8 • Ubuntu 16.04 • Ubuntu 18.04 • Ubuntu 20.04
Сетевые утилиты dig • host • ip • nmap
OpenVPN CentOS 7 • CentOS 8 • Debian 10 • Debian 8/9 • Ubuntu 18.04 • Ubuntu 20. 04
Диспетчер пакетов apk • apt
Управление процессами bg • chroot • cron • disown • fg • jobs • killall • kill • pidof • pstree • pwdx • time
Поиск grep • whereis • which
Информация о пользователе группы • id • lastcomm • last • lid/libuser-lid • logname • members • пользователи • whoami • who • w
WireGuard VPN Alpine • CentOS 8 • Debian 10 • Брандмауэр • Ubuntu 20.04


Создание нового ключа SSH и добавление это к ssh-агенту

Версия статьи : GitHub.com
GitHub.com Enterprise Server 3.0 Enterprise Server 2.22 Enterprise Server 2.21 Enterprise Server 2.20 GitHub AE Просмотреть все выпуски Enterprise

хвосты>

Версия статьи: GitHub.com
GitHub.com Enterprise Server 3.0 Enterprise Server 2.22 Enterprise Server 2.21 Enterprise Server 2.20 GitHub AE Просмотреть все выпуски Enterprise

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

В этой статье

  • Создание нового ключа SSH
  • Добавление вашего SSH-ключ для ssh-agent
  • Дополнительная литература

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

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

Создание нового ключа SSH

  1. Откройте TerminalTerminalGit Bash.

  2. Вставьте текст ниже, подставив его в свой адрес электронной почты GitHub.

      $ ssh-keygen  -t ed25519 -C " your_email@example.com "  

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

      $ ssh-keygen -t rsa -b 4096 -C "your_email@example.com  " 

    При этом создается новый ключ ssh, используя предоставленный адрес электронной почты в качестве метки.

     > Создание пары ключей ed25519 общего и частного характера.  
  3. Когда вам будет предложено «Введите файл, в котором нужно сохранить ключ», нажмите Enter. Это принимает расположение файла по умолчанию.

     > Введите файл, в котором нужно сохранить ключ (/Users/ you /.ssh/id_ed25519):   [Нажмите ввод]   

     > Введите файл, в котором нужно сохранить ключ  (/c/Users/ you /.ssh/id_ed25519):[Нажмите ввод]   

     > Введите файл, в котором нужно сохранить ключ (/home/ you /.ssh/id_ed25519):  [  Нажмите ввод]   

  4. В появившемся запросе введите безопасную парольную фразу. Дополнительные сведения см. В разделе «Работа с ключевыми ключевыми фразами SSH».

     > Введите кодовую фразу (пусто, если кодовая фраза отсутствует):  [Введите кодовую фразу] > Введите ту же парольную фразу еще раз:  [Введите парольную фразу еще раз]   

Добавление вашего SSH-ключа в ssh- агент

Перед добавлением нового SSH-ключа к ssh-agent для управления вашими ключами вы должны были проверить существующие SSH-ключи и сгенерировать новый SSH-ключ. При добавлении ключа SSH к агенту используйте команду macOS ssh-add по умолчанию, а не приложение, установленное macports, homebrew или другим внешним источником.

  1. Запустить ssh-agent в фоновом режиме.

      $ eval "$ (ssh-agent -s  ) "> Agent pid 59566  
  2. Если вы используете macOS Sierra 10.12.2 или более поздней версии, вам нужно будет изменить свой ~/.ssh/config для автоматической загрузки ключей в ssh-agent и сохранения парольных фраз в вашей связке ключей.

    • Во-первых, проверьте, существует ли ваш файл ~/.ssh/config в месте по умолчанию.

        $ open ~/.ssh/config>  Файл/Users/you/.ssh/config не существует.  
    • Если файл не не существует, создайте файл.

        $ touch ~/.ssh/config  
    • Откройте файл ~/.ssh/config , затем измените файл, заменив ~/.ssh/id_ed25519 , если вы не используют местоположение и имя по умолчанию для вашего ключа id_ed25519 .

        Host * AddKeysToAgent да UseKeychain да IdentityFile ~/.ssh/id_ed25519  

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

  3. Добавьте свой закрытый ключ SSH в ssh-agent и сохраните кодовую фразу в брелке. Если вы создали свой ключ с другим именем или добавляете существующий ключ с другим именем, замените id_ed25519 в команде именем вашего файла закрытого ключа.

      $ ssh-add -K ~/.ssh/id_ed25519  

    Примечание: Параметр -K — это стандартная версия Apple ssh-add , которая сохраняет кодовую фразу в вашей связке ключей, когда вы добавляете ключ ssh в ssh-агент. Если вы решили не добавлять парольную фразу к своему ключу, запустите команду без параметра -K .

    Если у вас не установлена ​​стандартная версия Apple, вы можете получить сообщение об ошибке. Дополнительные сведения об устранении этой ошибки см. В разделе «Ошибка: ssh-add: недопустимый параметр — K.»

  4. Добавить ключ SSH в ваша учетная запись GitHub.

Если у вас установлен GitHub Desktop, вы можете использовать его для клонирования репозиториев, а не для работы с ключами SSH .

  1. Убедитесь, что ssh-agent запущен. Вы можете использовать инструкции «Автоматический запуск ssh-agent» в «Работа с ключевыми ключевыми фразами SSH» или запустить его вручную:

      # запустите ssh-agent в  background $ eval `ssh-agent -s`> Agent pid 59566  
  2. Добавьте свой закрытый ключ SSH к ssh-agent. Если вы создали свой ключ с другим именем или добавляете существующий ключ с другим именем, замените id_ed25519 в команде именем вашего файла закрытого ключа.

      $ ssh-add ~/.ssh/id_ed25519  
  3. Добавьте ключ SSH в свой GitHub аккаунт.

  1. Запустить ssh-agent в фоновом режиме.

      $ eval "$ (ssh-agent -s)"> Идентификатор идентификатора агента 59566  
  2. Добавить ваш закрытый ключ SSH к ssh-агенту. Если вы создали свой ключ с другим именем или добавляете существующий ключ с другим именем, замените id_ed25519 в команде именем вашего файла закрытого ключа.

      $ ssh-add ~/.ssh/id_ed25519  
  3. Добавьте ключ SSH в свой GitHub аккаунт.

Дополнительная литература

  • «О SSH»
  • «Работа с ключевыми фразами SSH»
  • «Авторизация SSH-ключа для использования с системой единого входа SAML»

Помогите нам сделать эти документы отличными!

Все документы GitHub имеют открытый исходный код. Видите что-то неправильное или непонятное? Отправьте запрос на перенос.

Сделайте взнос

Или узнайте, как внести свой вклад.

Оцените статью
logicle.ru
Добавить комментарий