Блог Atlantic.Net

SSH означает «Secure Shell» и представляет собой зашифрованный протокол, используемый для входа в систему и управления удаленным сервером. SSH также поддерживает различные механизмы аутентификации. SSH использует аутентификацию на основе пароля и аутентификацию на основе открытого ключа для безопасного соединения между клиентом и сервером. Аутентификация на основе ключей SSH более безопасна, чем аутентификация на основе пароля, потому что ключи очень сложно угадать или взломать с использованием доступной в настоящее время вычислительной мощности.

В этом руководстве мы покажем вам, как настроить SSH аутентификация на основе ключей на сервере Ubuntu 18.04.

Предварительные требования

  • Два свежих Ubuntu 18.04 VPS на облачной платформе Atlantic.Net
  • Корневые пароли, настроенные на обоих серверах.

Шаг 1. Создайте облачный сервер Atlantic.Net

Сначала войдите в ваш облачный сервер Atlantic.Net. Создайте новый сервер, выбрав Ubuntu 18.04 в качестве операционной системы с как минимум 2 ГБ ОЗУ. Подключитесь к своему облачному серверу через SSH и войдите в систему, используя учетные данные, выделенные вверху страницы.

После входа на сервер Ubuntu 18.04 выполните следующую команду, чтобы обновить базовую систему с помощью последние доступные пакеты.

 apt-get update -yapt-get upgrade -y 

Шаг 2. Создайте ключ SSH на клиентском компьютере

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

 ssh-keygen -t rsa 

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

 Создание общедоступного/частного rsa  пара ключей. Введите файл, в котором будет сохранен ключ (/root/.ssh/id_rsa): Введите кодовую фразу (пусто, если кодовая фраза отсутствует): Введите ту же парольную фразу еще раз: Ваш идентификатор был сохранен в/root/.ssh/id_rsa.  открытый ключ был сохранен в/root/.ssh/id_rsa.pub. Отпечаток ключа: cd: 58: c4: 35: 60: 6  f: a4: 2e: f0: b7: 42: c5: 20: 78: 86: b2 [электронная почта защищена] Случайное изображение ключа: + - [RSA 2048] ---- + |  о.  .. + o + ||  .  о о.  =. +.  ||  о о.  = o ||  E o B.  ||  S = ||  .  о.  ||  .  .  ||  .  ||  | + ----------------- + 

Вышеупомянутая команда сгенерирует 2048-битную пару ключей RSA с безопасной парольной фразой для предотвращения несанкционированного доступа вход в систему.

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

 ls -l .ssh/id_rsa * 

Вы должны увидеть следующий результат:

 -rw ------- 1 root root 1766 1 ноября 11:03 .ssh/id_rsa-rw-r - r-- 1  root root 401 1 ноября 11:03 .ssh/id_rsa.pub 

На этом этапе у вас есть открытый и закрытый ключи, которые вы можете использовать для аутентификации на своем сервере Ubuntu.

Шаг 3. Скопируйте открытый ключ на сервер Ubuntu

Затем вам нужно будет скопировать открытый ключ с клиентского компьютера на ваш сервер Ubuntu 18.04.. Вы можете скопировать открытый ключ с помощью утилиты ssh-copy-id, как показано ниже:

 ssh-copy-id [email protected] 

Вы должны увидеть следующий результат :

 Не удалось установить подлинность хоста 192.168.0.102 (192.168.0.102). Отпечаток ключа ECDSA - f7: 9c: 72: 63: 33: ac: d6: 49:  26: 9c: af: c6: ff: 11: 27: 01. Вы уверены, что хотите продолжить подключение (да/нет)?  yes 

Введите « yes » и нажмите ENTER , чтобы продолжить. Вы должны увидеть следующий результат:

/usr/bin/ssh-copy-id: INFO: попытка входа в систему с новым ключом (ключами), чтобы отфильтровать все, что уже установлено/ usr/bin/ssh-copy-id: ИНФОРМАЦИЯ: осталось установить 1 ключ (и) - если теперь появится запрос, это установка нового ключа [защищенного по электронной почте] пароля: 

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

 Номер ключа (  s) добавлено: 1Теперь попробуйте войти в систему с помощью: "ssh '[email protected]'" и убедитесь, что были добавлены только те ключи, которые вам нужны. 

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

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

Вы можете отключить аутентификацию на основе пароля, отредактировав файл/etc/ssh/sshd_config:

 nano/etc/ssh/sshd_config 

Найдите следующие строки и измените значение «нет»:

 PasswordAuthentication noChallengeResponseAuthentication noUsePAM no 

Сохраните и закройте файл, затем перезапустите службу SSH, чтобы применить конфигурацию:

 systemctl restart ssh 

Шаг 5. Войдите на сервер с помощью ключей SSH

На этом этапе настроена аутентификация на основе ключей SSH. Теперь пришло время войти в систему на сервере Ubuntu 18.04 с открытым ключом.

Вы можете войти на свой сервер Ubuntu 18.04, просто выполнив следующую команду:

  ssh [email protected] 

Если вы входите в систему в первый раз, вам будет предложено, как показано ниже:

 Подлинность хоста 192.168.0.102 (  192.168.0.102) 'не может быть установлен. Отпечаток ключа ECDSA - f7: 9c: 72: 63: 33: ac: d6: 49: 26: 9c: af: c6: ff: 11: 27: 01.  вы хотите продолжить подключение (да/нет)?  yes 

Введите Yes и нажмите Enter , чтобы продолжить. Затем вам будет предложено ввести кодовую фразу для вашего закрытого ключа, как показано ниже:

 Введите кодовую фразу для ключа '/root/.ssh/id_rsa': 

Введите кодовую фразу для закрытого ключа и нажмите Enter , чтобы войти на свой сервер.

Заключение

В приведенном выше руководстве мы узнали как настроить аутентификацию на основе ключа SSH с парольной фразой в Ubuntu 18.04. Соединение между вашим клиентским компьютером и сервером Ubuntu 18.04 теперь очень безопасно. Вы также можете использовать тот же ключ для другого удаленного сервера. Если вы готовы начать работу с аутентификацией на основе ключей SSH, попробуйте VPS-хостинг с Atlantic.Net сегодня.



Как добавить SSH-ключи в Author_keys?

У меня есть сервер Ubuntu на Amazon EC2, который я использую для разработки, и сегодня я тупо удалил все из своего ~/.ssh/authorized_keys файл. К счастью, у меня открыт SSH, поэтому я все еще подключен и могу исправить файл, но когда я пытаюсь вернуть свой ключевой файл, это не работает. Я все еще получаю отказ в разрешении с сервера на моем локальном компьютере.

authorized_keys имеет разрешения 600. Я попытался добавить свой SSH-ключ с помощью ssh-rsa и оставить ssh-rsa выключенным. Я также попытался сделать ключ SSH одной строкой, но это тоже не сработало.

Есть ли что-то еще, что мне нужно сделать, например, как-то перезагрузить файл?


Вы не должны никогда сохранять файл с его содержимым, начинающимся с ----- НАЧАТЬ RSA PRIVATE KEY ----- на сервере, это ваш закрытый ключ. Вместо этого вы должны поместить открытый ключ в файл ~/.ssh/authorized_keys .

Этот открытый ключ имеет расширение .pub при создании с использованием ssh-keygen , а его содержимое начинается с ssh-rsa AAAAB3 . (Бинарный формат описан в ответах на этот вопрос).

Разрешения ~/.ssh на сервере должны быть 700. Файл ~/.ssh/authorized_keys (на сервере) должен иметь режим 600. Разрешения (закрытого) ключа на стороне клиента должны быть 600.

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

  ssh-keygen -t  rsa  

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

Если это не поможет , запустите ssh с параметрами для большей детализации:

  ssh -vvv user@example.com  

На стороне сервера вы можете просмотреть /var/log/auth.log для получения подробной информации.


196

Альтернативный способ i nустановите свой открытый ключ в authorized_keys удаленной машины:

  cat ~/.ssh/id_rsa.pub |  ssh USER @ HOST "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"  

Некоторые преимущества:

  • не требует установки ssh-copy-id .

  • гарантирует, что mkdir работает перед попыткой добавления id_rsa.pub в authorized_keys .

Улучшите этот ответ
отредактировано 11 мая 2016, 16:02
ответил 27 февраля ’13 в 19:31
  • 12
    Ваш ответ помог мне сделать это на нескольких удаленных машинах без каких-либо дополнительных пакетов, спасибо. — nol 07 марта 2014, в 10:06
  • Это не гарантирует, что каталог «~/.ssh» и файл «~/.ssh/authorized_keys» будут созданы с правильными разрешениями. — Ник 04 июня ’14 в 17:55
  • 1
    @ Ник, у меня была такая проблема. Так что, возможно, нужно сначала проверить их существование, если отсутствует, правильно создать с помощью chmod (700/папка, 600/файл), и только затем добавить? так, может быть, это не может быть однострочник? — AnneTheAgile, 7 августа 2014 г., в 3:52
  • 7
    @AnneTheAgile Я думаю, изменить часть mkdir -p ~/.ssh в ответе @MariusButuc на umask 077 && mkdir -p ~/.ssh — это все, что вам нужно сделать, чтобы убедиться, что он будет работать правильно. — Ник 07 авг., 14:02
  • 1
    ты @ Ник! Я попробую. — AnneTheAgile 07 авг., 2014, 21:02
добавить комментарий |

Альтернативный способ установки вашего открытого ключа в authorized_keys удаленного компьютера:

  cat ~/.ssh/id_rsa.pub |  ssh USER @ HOST "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"  

Некоторые преимущества:

  • не требует установки ssh-copy-id .

  • гарантирует, что mkdir работает перед попыткой добавления id_rsa.pub в authorized_keys.


139

Если у вас есть аутентификация на основе входа в систему, используйте ssh-copy-id , чтобы добавить ваши открытые ключи на удаленный сервер.

  ssh-copy-id user @ host  

Улучшите этот ответ
отредактировано 27 февраля 2013 г. в 19:30
Marius Butuc
3,86133 золотых знака2323 серебряных знака2525 бронзовых знаков
ответил 01 июня ’11 в 16:32
  • 1
    Похоже, это недопустимая команда для Mac, а это моя клиентская машина. — Дэйв Лонг 01 июня ’11 в 17:05
  • 1
    Может быть полезно phildawson.tumblr.com/post/484798267/ssh-copy-id-in-mac-os-x — Шоаиб Наваз, 1 июня 2011 г., 17:23
  • 14
    в OSX, которую вы можете установить с помощью brew: brew install ssh-copy-id — Фил, 21 ноября 2013 г., 0:26
  • На Macports эту команду можно установить с помощью sudo port install openssh + ssh_copy_id . + ssh_copy_id устанавливает openssh с вариантом ssh_copy_id. — Стефан Ласевски 18 сен 2014, в 22:23
  • 7
    Обратите внимание, что инструкции на phildawson.tumblr.com требуют, чтобы вы устанавливали ненадежное программное обеспечение как root. Это довольно опасный и хороший способ получить взлом, если вы не уверены, что можете доверять автору. — Стефан Ласевски 18 сен. ’14 в 22:24
добавить комментарий |

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

  ssh-copy-id user @ host  

41

  local> scp .ssh/id_dsa.pub remote.com:local> ssh remote.comremote> cat id_dsa.  pub >> .ssh/authorized_keysremote> rm id_dsa.pubremote> exit  

Улучшите этот ответ
отредактировано 5 сентября ’14 в 21:37
ответил 01 июня 2011 в 18:23
добавить комментарий |

  local> scp .ssh/id_dsa.pub remote.com:local> ssh remote.comremote> cat id_dsa.  pub >> .ssh/authorized_keysremote> rm id_dsa. pubremote> exit  

21

Самый простой способ — скопировать и вставить …

Сначала просмотрите/скопируйте содержимое вашего локального открытого ключа id_rsa.pub , включая начало «ssh-rsa» пока он не закончится вашим адресом электронной почты:

  cat ~/.ssh/id_rsa.pub  

Затем отредактируйте authorized_keys на сервере и вставьте содержимое буфера обмена под любыми другими ключами в этом файле:

  nano ~/.ssh/authorized_keys  

И сохраните Ctl + O , выйдите из файла Ctl + X , выйдите из сеанса SSH exit и попробуйте снова войти в систему, чтобы убедиться, что все работает. Если он не запрашивал пароль, он работал.

Улучшите этот ответ
ответил 7 сентября 2015, 18:42
  • Это далеко не самый простой способ, и он требует ошибок, которые могут повредить файл. цепочка ключа в файл authorized_keys НАМНОГО безопаснее. — RichieHH, 30 ноя., 20:14
  • Я не согласен. Потребуется большой талант, чтобы неправильно набрать слово «кошка» и выделить строки, которые явно не были частью файла. — ow3n 30 ноя. ’20 в 13:20
добавить комментарий |

Самый простой способ — скопировать и вставить …

Сначала просмотрите/скопируйте содержимое вашего локального открытый ключ id_rsa.pub , включая начало «ssh-rsa», пока он не закончится вашим адресом электронной почты:

  cat ~/.ssh/ id_rsa.pub  

Затем отредактируйте authorized_keys на сервере и вставьте содержимое буфера обмена под любыми другими ключами в этом файле:

  nano ~/.ssh/authorized_keys  

И сохраните Ctl + O , выйдите из файла Ctl + X , выйдите из сеанса SSH exit и попробуйте снова войти в систему, чтобы убедиться, что все работает. Если он не запрашивал пароль, он работал.


6

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

  mkdir -p ~/.ssh && chmod 700 ~ /.ssh && touch ~/.ssh/authorized_keys && chmod 600 ~/. ssh/authorized_keys && echo "ssh-rsa KEYGOESHERE user @ remotehost or note" >> ~/.ssh/authorized_keys  

Улучшите этот ответ
отредактировано 7 декабря ’16 в 22:35
Zanna ♦
61.2k1818 золотых знаков170170 серебряных знаков288288 бронзовых знаков
ответил 7 декабря ’16 в 20:33
добавить комментарий |

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

  mkdir -p ~/.ssh && chmod 700 ~ /.ssh && touch ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys && echo "ssh-rsa KEYGOESHERE user @ remotehost or note" >> ~/.ssh/authorized_keys  

5

Я думал, что могу внести свой вклад в это, поскольку речь идет об AWS в частности, и во всех ответах проблема рассматривается только как проблема Linux, как если бы это была часть оборудования. Первое, что вам нужно понять, это то, что вы никогда и никогда не должны рассматривать экземпляры EC2 как оборудование. Это просто создаст вам больше работы. Относитесь к ним как к изменчивым. Это самое большое препятствие, с которым сталкиваются люди с AWS. Создайте AMI своего экземпляра и вставьте нужный вам ключ в новый экземпляр. Cloud-init позаботится об этом за вас. Более подробно все, что вам нужно сделать, это использовать правильный открытый ключ при создании нового экземпляра из AMI оригинала. Если, как в комментариях к утвержденному ответу, вы хотите для создания собственной пары ключей из файлов pub и pem AWS предоставляет вам возможность загружать открытые ключи для использования в EC2.

http://docs.aws.amazon.com/AWSEC2/ последняя версия/UserGuide/пары ключей ec2. html # как-генерировать-свой-ключ-и-импортировать-в-aws

Улучшите этот ответ
отредактировано 21 июля ’16 в 0:14
03 марта ’16 в 1:22
добавить комментарий |

Я думал, что могу внести свой вклад в это, поскольку речь идет именно об экземплярах AWS, и все ответы рассматривают проблему только как проблему Linux, поскольку если бы это было аппаратное обеспечение. Первое, что вам нужно понять, это то, что вы никогда и никогда не должны рассматривать экземпляры EC2 как оборудование. Это просто создаст вам больше работы. Относитесь к ним как к изменчивым. Это самое большое препятствие, с которым сталкиваются люди с AWS. Создайте AMI своего экземпляра и вставьте нужный вам ключ в новый экземпляр. Cloud-init позаботится об этом за вас. Более подробно все, что вам нужно сделать, это использовать правильный открытый ключ при создании нового экземпляра из AMI оригинала. Если, как в комментариях к утвержденному ответу, вы хотите для создания собственной пары ключей из файлов pub и pem AWS предоставляет вам возможность загружать открытые ключи для использования в EC2.

http://docs.aws.amazon.com/AWSEC2/ latest/UserGuide/ec2-key-pair.html # how-to-generate-your-own-key-and-import-it-to-aws


3

После сохранения открытого ключа вы должны сохранить закрытый ключ в каталог и файл на вашем компьютере. И в разделе auth ssh on putty вы должны указать файл закрытого ключа, который вы сохранили на своем рабочем столе. Это сработает. У меня работает.

Улучшите этот ответ
23 апр. ’14 в 22:59
  • 1
    Мне бы очень понравилось, если бы консоль Windows могла иметь все функции ssh, добавленные в ее интерпретатор — Деннис 9 ноя 2014, в 1:46
добавить комментарий |

После сохранения открытого ключа вы должны сохранить закрытый ключ в каталог и файл на вашем компьютере. И в разделе auth ssh on putty вы должны указать файл закрытого ключа, который вы сохранили на своем рабочем столе. Это сработает. Меня устраивает.


1

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

Этот вариант может быть полезен, если вы давали огромный список файлов с открытым ключом для импорта 🙂

  $ for i in $ (cat ListOfPubKeyFiles.txt);  делать кот $ я |  Пользователь ssh @ Имя хоста "cat >> ~/.ssh/authorized_keys";  готово  

Улучшите этот ответ
отредактировано 07 декабря 2016 в 22:36
Zanna ♦
61.2k 1818 золотых знаков170170 серебряных знаков288288 бронзовых знаков
ответил 23 августа 2016 в 17:32
добавить комментарий |

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

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

  $ for  я в $ (cat ListOfPubKeyFiles.txt);  делать кот $ я |  Пользователь ssh @ Имя хоста "cat >> ~/.ssh/authorized_keys";  готово  

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