SSH: Настройка

FreeBSD, ... Установка, настройка, эксплуатация.

Модератор: ROOT

SSH: Настройка

Сообщение ROOT » 29 июл 2013, 13:07

Оглавление


 Темы 
 О ключах 
 SSH - аутентификация по ключам 
 Настройка авторизации по ключу между серверами 
 Agent ssh 


 О ключах 
Ключ состоит из открытой и закрытой части. Открытая кладётся в домашний каталог пользователя, «которым» заходят на сервер, закрытая — в домашний каталог пользователя, который идёт на удалённый сервер.
  1. хост с которой подключаемся => приватный ключ => rsa.ppk => .ssh/config или ssh-agent
  2. хост к которому подключаемся => публичный ключ => rsa.pub => .ssh/authorized_keys
Типы ключей
RSA
RSA (аббревиатура от фамилий Rivest, Shamir и Adleman) — криптографический алгоритм с открытым ключом, основывающийся на вычислительной сложности задачи факторизации больших целых чисел.
Криптосистема RSA стала первой системой, пригодной и для шифрования, и для цифровой подписи. Алгоритм используется в большом числе криптографических приложений, включая PGP, S/MIME, TLS/SSL, IPSEC/IKE и других

DSA
DSA (англ. Digital Signature Algorithm - алгоритм цифровой подписи) — криптографический алгоритм с использованием открытого ключа для создания электронной подписи, но не для шифрования (в отличие от RSA и схемы Эль-Гамаля). Подпись создается секретно, но может быть публично проверена. Это означает, что только один субъект может создать подпись сообщения, но любой может проверить её корректность. Алгоритм основан на вычислительной сложности взятия логарифмов в конечных полях.
DSA лучше в плане производительности

ECDSA
Алгоритм цифровой подписи эллиптической кривой (ECDSA) был введен в качестве предпочтительного алгоритма аутентификации в OpenSSH 5.7. Некоторые поставщики также отключают требуемые реализации из-за потенциальных проблем с патентами. Есть два вида проблем:
Политические проблемы", достоверность кривых, подготовленных NIST, ставятся под сомнение после того, как откровения о том, что NSA охотно вставляют бэкдоры в программное обеспечение, аппаратные компоненты и опубликованные стандарты; Известные криптографы высказывали сомнения относительно того, как были разработаны кривые NIST, и добровольное заражение уже было доказано в прошлом.
'Технические проблемы", связанные с трудностью надлежащего внедрения стандарта, а также медлительностью и недостатками дизайна, снижающими безопасность в недостаточно ранних реализациях.
Обе эти проблемы лучше всего изложены в libssh curve25519. Несмотря на то, что политические проблемы все еще обсуждаются, существует четкий консенсус в отношении того, что # Ed25519 технически превосходен и поэтому должен быть предпочтительным.

Ed25519
Ed25519 был представлен в OpenSSH 6.5: «Ed25519 - это схема сигнатур эллиптической кривой, которая обеспечивает лучшую защиту, чем ECDSA и DSA, и хорошую производительность». Его главными достоинствами являются его скорость, время работы с постоянным временем (и сопротивление боковым каналам) и отсутствие туманных жестко заданных констант [8]. См. Также этот пост в блоге разработчиком Mozilla о том, как он работает. Он уже реализован во многих приложениях и библиотеках и является алгоритмом обмена ключами по умолчанию (который отличается от ключевой сигнатуры) в OpenSSH.


 SSH - аутентификация по ключам 
Код: выделить все
putty-0.63-installer.exe

  • прописываем в переменной Path путь к каталогу с установленной программой
Код: выделить все
C:\Program Files (x86)\PuTTY

  • Запускаем ssh-keygen. Выбираем ключ SSH-2 RSA и длину 2048 бит. Жмем «Generate». Ключ готов, заполняем кодовую фразу и комментарий к нему. Сохраняем приватный ключ как rsa.ppk и публичный как rsa.pub
  • Далее необходимо скопировать наш публичный ключ на сервер.
Код: выделить все
cd C:\Program Files (x86)\PuTTY
C:\Program Files (x86)\PuTTY>pscp rsa.pub root@srv:rsa.pub

  • Ключ скопировался, теперь нужно добавить его в /root/.ssh/authorized_keys. Для этого логинимся еще раз по паролю, через putty и выполняем
Код: выделить все
ssh-keygen -i -f rsa.pub >> /root/.ssh/authorized_keys
rm rsa.pub

Теперь осталось добавить наш ключ в ssh-agent'a. После запуска он сидит в трее, чтобы добавить ключ кликаем правой кнопкой на «Add Key»
Запуск pageant почти в автоматическом режиме. После ввода парольной фразы запускается Putty с конкретным профилем.
Код: выделить все
"C:\Program Files (x86)\PuTTY\pageant" rsa.ppk -c putty.exe -load "srv-195.0.1.1"

Теперь логинимся в putty:
Код: выделить все
login as: root
Authenticating with public key "rsa-key-20080908" from agent


Настройка работы кнопок home и end при работе во FreeBSD через ssh-клиент Putty
Для решения проблемы в настройках putty (Connection / Data / Terminal-type string) нужно поставить putty вместо xterm. Это позволит использовать описание терминала putty, которое уже присутствует в termcap из состава FreeBSD.
Для проверки отсутствия возможности аутентификации по паролю можно воспользоваться дополнительной опцией
Код: выделить все
ssh srv92 -o PubkeyAuthentication=no

Данной опцией мы запрещаем аутентификацию по ключу и смотрим на результат



 Настройка авторизации по ключу между серверами 
Генерируем ключи RSA
Код: выделить все
ssh-keygen -t RSA -b 2048 -C "user@sergey.free-adm.ru"

Генерация ключей с помощью программы ssh-keygen.

Для создания и управления ключами, предназначена программа ssh-keygen, также входящая в пакет программного обеспечения OpenSSH. Полный список опций можно как всегда посмотреть командой man ssh-keygen. Здесь приведу лишь несколько из них:
  1. -t type - ssh-keygen, работает с тремя типами ключей. Возможные значения:
    • RSA 1 - для протокола SSH версии 1.
    • RSA - для протокола SSH версии 2.
    • DSA - для протокола SSH версии 2.
    • ECDSA - введен в качестве предпочтительного алгоритма аутентификации в OpenSSH 5.7.
    • Ed25519 - был представлен в OpenSSH 6.5: «Ed25519 - это схема сигнатур эллиптической кривой, которая обеспечивает лучшую защиту, чем ECDSA и DSA, и хорошую производительность»
    Код: выделить все
    ssh-keygen -t ed25519
  2. -b Длина ключа в битах.
    • RSA - минимальная длина, 768 бит, длина ключа по умолчанию, 2048 бит.
    • DSA - длина 1024 бита.
  3. -i Данная опция используется для импорта ключей из одного формата ( например ключи сгенерированные программой PuTTYgen, для Windows ), в формат OpenSSH.
  4. -l Посмотреть отпечаток секретного ключа ( fingerprint ).
  5. -p Изменить секретную фразу приватного ключа.
  6. -C comment - Предоставляет новый комментарий

Копируем публичный ключ на удалённый сервер любым из перечисленных способов. Первый способ предпочтительней, поскольку ssh-copy-id иногда даёт сбои.
Код: выделить все
ssh-keygen -i -f id_rsa.pub >> /root/.ssh/authorized_keys
rm id_rsa.pub
или
ssh-copy-id root@srv92

Или использовать только указанный ключ
Код: выделить все
ssh-copy-id -i ~/.ssh/id_rsa.pub root@srv92

При возникновении ошибок добавления ключа нужно смотреть authorized_keys на предмет наличия в нём ключа от той же машины
и файл known_hosts в котором сохраняются отпечатки ключей с именами хостов. Далее, после проверки всего зоопарка на работоспособность, отрубаем авторизацию по паролю. Для этого в файле /etc/ssh/sshd_config правим следующие настройки
Код: выделить все
PermitRootLogin yes - Данная директива нужна, если вы планируете работать под учетной записью root.
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
HostbasedAuthentication no
PermitEmptyPasswords no
#PrintMotd yes - Вывод приветствия (по умолчанию)
#PrintLastLog yes - Отчёт о последней регистрации (по умолчанию)

Если в сети есть настроенный DNS-сервер с обратной зоной, то можно разрешить демону SSH резолвить IP в имена. Для этого раскомментируем строку UseDNS и меняем значение на "yes"
Код: выделить все
UseDNS yes

Затем перезапускаем службу
Код: выделить все
systemctl restart sshd.service



Для диагностики проблем на стороне клиента существуют ключи -v и -vv
Код: выделить все
ssh -v ( or -vv) ...

Диагностика на сервере включается с помощью ключа -d при запуске демона sshd из командной строки
Код: выделить все
sshd -d

Установите права 0700 на папку .ssh и 0600 на файл authorized_keys.
Код: выделить все
chmod 700 /root/.ssh
chmod 600 /root/.ssh/authorized_keys
или
chmod go-w  /home/serg/.ssh /home/serg/.ssh/authorized_keys

Внимание
Без лишения прав записи на файл authorized_keys и каталог .ssh для группы и остальных пользователей авторизация по публичному ключу РАБОТАТЬ НЕ БУДЕТ!!!



Использования SFTP
На сервере (с помощью FTP или файлового менеджера контрольной панели) создайте файл ~/.sftp/authorized_keys и поместите в него ваш публичный ключ из файла id_rsa.txt. Установите права 0700 на папку .sftp и 0600 на файл authorized_keys.


 Agent ssh 
чтобы агент запускался автоматически при входе в систему:
Код: выделить все
echo 'eval $(ssh-agent)' >> ~/.bash_profile

Если вы хотите, чтобы ssh-agent запускался автоматически вне зависимости от того, кто из пользователей входит в систему, примените эту команду к другому файлу - /etc/profile:
Код: выделить все
 echo 'eval $(ssh-agent)' >> /etc/profile

После запуска ssh-agent вам нужно будет добавить ваш закрытый ключ в его кэш. Если вы захотите, чтобы ваши закрытые ключи добавлялись автоматически при входе в систему, добавьте следующую команду в ваш ~/.bash_profile:
Код: выделить все
ssh-add -AK ~/.ssh/[your-private-key]

Практически все
Для желающих отблагодарить
SB: 4274320029755744
QIWI: +79175241450
Аватар пользователя
ROOT
Администратор
 
Сообщений: 137
Зарегистрирован: 01 авг 2011, 09:36
Откуда: Моск. обл., г. Железнодорожный

Вернуться в FreeBsd

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1