Skip to main content

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

  • Home
  • Linux
  • SSH без пароля или аутентификация с использованием шифрованных ключей

У вас есть отдельно стоящий сервер? Ходите на него через ssh? Пароль в целях безопасности больше 10 символов? В день заходите на сервер n-ное количество раз? Реально задолбало вводить каждый раз пароль на вход? Меня тоже 
А выход как всегда прост до безобразия, потому что все уже придумано до нас.

Ключи SSH. Или метод Identity/Pubkey

При использовании метода идентификации Identity/Pubkey исключается использования статических паролей. Дабы каждый раз не набирать пароли, которые можно перехватить кейлоггером ну или просто подсмотреть, мы будем хранить на диске пару ключей, которые и будут использоваться для проверки подлинности. Вот некоторые из положительных моментов этого типа аутентификации:

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

Генерация SSH ключей. Или создание Identity/Pubkey

Для генерации пары ключей нам необходимо воспользоваться утилитой ssh-keygen.

Опцией  -t rsa мы указали тип создаваемых ключей (возможны варианты ключей — rsa1, rsa или dsa)

Настройка сервера SSH

Все вышеуказанные манипуляции мы делали на локальной машине, теперь надо поднастроить удаленную (сервер куда мы будем логиниться). Ключи есть, теперь необходимо разрешить данный тип аутентификации на сервере SSH. Сначала определим тип аутентификации — Pubkey или Identity, установив следующие настройки в sshd_config

Приведенные выше значения разрешают аутентификацию Identity/Pubkey для протокола SSH версии 1 и 2, и проверяют наличие публичных ключей в файле $HOME/.ssh/authorized_keys. Необходимо проверить наличие этих строк в файле конфигурации /etc/ssh/sshd_config, если таковых нету — добавить и перезапустить сервис.

Копирование файла с ключом на удалённый хост

Два варианта

ssh-copy-id

Скорей всего у вас должна быть утилитка ssh-copy-id и с ее помощью

«ручной» вариант

или такой

Вроде все сделали, все настроили — пора пробовать

Должно пустить без пароля (если только вы не ставили пароль на сам ключ). upd: по совету Vladimir-а (см. первый комментарий), ставим более правильные права доступа (chmod) — на каталог ~/.ssh ставим 700

Related Posts

Clear Filters

Всегда существовала проблема занимаемого места. Раньше это волновало ибо размеры жестких дисков были просто «огроменных» размеров, например 200Мб или 10Гб (естественно были и меньше). Сейчас же, когда стоимость одного Гб стоит почти ничего, казалось бы этот вопрос должен был отойти на задний план. Но он все также волнует пользователей. А для тех, кто выбрал линукс, это вообще дело чести — пилить свою систему до идеального состояния. Вот поэтому и возникает закономерный вопрос — зачем какой то пакет будет занимать мои 100Мб, если он абсолютно не нужен и я найду этим мегабайтам лучшее применение? Или если уж на то пошло, приводить все в порядок, не будем ограничиваться только занимаемым местом. Мы пойдём ещё дальше и найдём все, что можно подшаманить, подкрутить, подправить.

Плагин Presto для yum. Слыхали про такой? Если нет тогда вы просто обязаны узнать про него, установить и пользоватся. Хотя, наверное, многие из вас уже давно им пользуется. Но для тех кто еще не в курсе — читаем в продолжении про что такое плагин Presto (нет это не короткометражный мультфильм от студии Pixar 😀 )

Обновление это и важно и нужно. И дыры закрывает и новые фишки добавляет. Есть только одно НО для обновлений — это их размер. Тем у кого интернет канал широкий — тому это может и все равно, а вот остальным будет очень даже кстати.

Довольно часто возникает необходимость узнать работоспособность сети. Или просто в общеобразовательных целях — узнать как взаимодействуют между собой объекты сети. Или с целью исследовать где сидит страшный bug :). И вот именно для этих целей в unix-ы рулят. Потому что все толковое написано для никсов и уже потом портировано под винду.
Вот об одной такой утилите мы сегодня и поговорим — tcpdump.

tcpdump (от TCP и англ. dump — свалка, сбрасывать) — утилита UNIX, позволяющая перехватывать и анализировать сетевой трафик, проходящий через компьютер, на котором запущена данная программа.

Основные назначения tcpdump:

Отладка сетевых приложений.
Отладка сети и сетевой конфигурации в целом.

Было как то дело и здесь я описывал Как проапгрейдить Fedora 9 до Fedora 10. Процес аналогичный, но если в прошлый раз я обновился через полгода, а может и позже, после выхода нового релиза, то в этот раз я решил сделать это пораньше. Специально, что бы был «экстрим». И он был.

Чудес было много.

17 Комментарии

Vladimir
Vladimir
14.08.2009 at 04:45

К ручному методу я бы добавил изменение прав на каталог (0700) и ключ (0600). Так безопаснее 🙂

Vladimir
Vladimir
14.08.2009 at 04:46

Мда, сорри, не увидел второй блок 🙁 Но всё равно права на папку ~/.ssh лучше ставить 0700 — ибо смысл туда ходить посторонним, если всё равно на чтение ключей прав у них быть не должно?

rizloff
rizloff
19.08.2009 at 21:47

Спасибо за совет, подкорректировал права доступа
И за плагин спасибо — разобрался, все работает.

user
user
26.12.2010 at 21:29

В статье ошибка, нужно заменить:

ssh-copy-id -i ~/.ssh/id_rsa youruser@remote.server.host
на
ssh-copy-id -i ~/.ssh/id_rsa.pub youruser@remote.server.host

cat ~/.ssh/id_rsa | ssh -l user@remote.server.host ‘mkdir -p .ssh;touch .ssh/authorized_keys; cat >> .ssh/authorized_keys;chmod 700 ~/.ssh;chmod 600 ~/.ssh/authorized_keys’
на
cat ~/.ssh/id_rsa.pub | ssh -l user@remote.server.host ‘mkdir -p .ssh;touch .ssh/authorized_keys; cat >> .ssh/authorized_keys;chmod 700 ~/.ssh;chmod 600 ~/.ssh/authorized_keys’

Peering
Peering
17.07.2012 at 15:59

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

Рома
Рома
28.03.2013 at 11:07

Все равно запрашивает пароль на удаленного юзера!

Николай
Николай
03.04.2013 at 22:47

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

> Все равно запрашивает пароль на удаленного юзера!
Значит что-то не так делали. Инструкция рабочая.

сымбат
сымбат
20.05.2013 at 07:19

у меня также запрашивает пароль но без пароля и даже с вводом пароля не пускает. Как исправить?

Степан
Степан
23.05.2013 at 15:58

«Значит что-то не так делали. Инструкция рабочая.»
ну да, да….

автор
а если версия ssh2 не нужно ли создавать authorized_keys2 ?
а править конфиг файл не нужно?

Александр
Александр
13.12.2013 at 06:59

Все эти действия проводятся на удалённой тачке. Разве этого достаточно?? А на локальной, если она под управлением linux? Или windows? В случае с виндой надо ещё с PUTTY.EXE колдовать.

Богдан
Богдан
10.05.2014 at 22:45

‘localhost$ scp ~/.ssh/id_rsa.pub youruser@remote.server.host
добавте ‘:~\’ в конец.

Hatsnal
Hatsnal
07.06.2016 at 18:46

Только что проверил. Все работает.

ssh-rsa
ssh-rsa
06.02.2017 at 18:32

У кого запрашивает пароль — вы вероятно не тот ключи скопировали. паблик ключ начинается с ssh-rsa

viktor
viktor
05.02.2018 at 15:01

долго же я мучался, пытаясь понять что сделал не так. 100 раз перепроверил ключи, chmod’Ы… а сервер всё пишет: server refused your certificate. оказывается…. надо было указать владельца, после создания папки «mkdir .ssh».
например chown $USER:$USER — вдруг кому поможет … 🙂

Add Comment

You must be logged in to post a comment.