- Створення пари RSA ключів
- конфігурація sshd_config
- PuTTY Unable to use key file
- Відновити публічний ключ від приватного
- Авторизація по ключам в OpenSSH server for Windows
- Рекомендований контент
Наша взаимовыгодная связь https://banwar.org/
Налаштування SSH авторизації тільки через RSA ключі не особливо складний процес, але має свої нюанси. Перший і найголовніший - це безпека SSH авторизації по RSA ключів.
Чому я не люблю SSH авторизацію по RSA ключів? SSH авторизація по RSA ключів зручна, але вважаю її недостатньо безпечної через відкритості приватного ключа, а особливо якщо на приватному ключі немає пароля - тобто приватний ключ доступний майже для всіх програм запущених в ОС і його витік з файлової системи більш вірогідна ніж витік пароля з мозку!
При всіх антивирусах, мережевих моніторах на шлюзах і в самій ОС, системах превентивного виявлення вторгнень та інших заходах безпеки сервера або робочої станції, які годиною набувають параноїдальні ознаки - поставити 100% на те, що на машині немає, або чи не з'явиться в найближчому майбутньому, якийсь стукає хрени, неможливо.
В безпеки своєї робочої машини я впевнений на 99.99%, поки все йде добре (оновлення всього завжди ручне, автоматично на моєму ПК тільки час синхронізується, вхідні / вихідні жорстко зафільтрованних, браузери все в пісочниці, в тимчасових каталогах заборонена екзекуція виконуваних і т.д .), але тим не менше через брак 1-го відсотка впевненості не можу собі дозволити SSH авторизацію по RSA ключів.
Хтось може заперечити, мовляв "Так, але на приватний ключ можна поставити пароль!" - згоден, можна, але в такому випадку пароль буде зашитий в сам ключ, що при його крадіжці, а також достатніх обчислювальних ресурсах і хороших знаннях криптографії, дасть можливість для його активного брутфорса без будь-яких обмежень з боку ОС - тобто брутфорс ОС виконати набагато складніше (блокування доступу після 2-3 невдалих спроб входу, та ін.), ніж брутфорс ключа локально!
Також якщо буде втрачено приватний (id_rsa), то ми сміливо може помахати серванта ручкою і піти з горя синяви наклюкаццо (when SSH private keys are lost) якщо немає фізичного доступу до машини - публічний (id_rsa.pub) можна відновити з приватного, а ось приватний з публічного навряд чи ... Є якась фіча відкликання (RevokedKeys) ключів, але це не одне і теж, що відновлення - відкликані (анульовані) ключі не можуть використовуватися для подальшої аутентифікації (Revoked keys can not be used for user or host authentication and will trigger a warning if used.)!
Автор поста залишився при своїй думці - SSH авторизація по RSA ключів менш безпечна, ніж авторизація по паролю, наприклад:
- при пральний авторизації, загроза сніфінга інтернет трафіку, але тут ми можемо використовувати додатковий SSL тунель - ймовірна приватність 99%;
- при авторизації по ключам, загроза витоку приватного ключа разом з паролем від королівства - ймовірна приватність 50/50%;
Тільки не кажіть, що злом SSL трафіку або брутфорс приватного RSA ключа неможливий - німці у Другу світову теж думали, що шифрувальну машину Енігма вермахту непереможна!
Якщо хто все ж наважився використати механізм SSH аутентифікації тільки на одних RSA ключах, з забороною парольного механізму, тоді виконуємо пару нескладних кроків, що описані нижче, а також пишемо заповіт, одягаємо памперси і тримаємо труселя міцніше !;)
Створення пари RSA ключів
Створення пари RSA ключів не займе багато часу - ssh-keygen-ім RSA ключі:
-bash-4.2 $ ssh-keygen -t rsa Generating public / private rsa key pair. Enter file in which to save the key (/ home / shaman /.ssh / id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in / home / shaman /.ssh / id_rsa. Your public key has been saved in / home / shaman /.ssh /id_rsa.pub. The key fingerprint is: 72: b9: 9a: 39: з 5: b2: 77: р 4: 8c: 59: 62: 90: 4f: a9: 03: 80 shaman @ openbsd.localhost The keys randomart image is: + - [RSA 2048] ---- + | . | | E. | | . . . | | . o o. | | .. * S | | + O * .o | | . = .B. | | o ++ + | | . +. . | + ----------------- + -bash-4.2 $
Тут ми увійшли в консоль як користувач "shaman", домашній каталог "/ home / shaman", в якому за замовчуванням розташований каталог .ssh з RSA ключами (id_rsa і id_rsa.pub). У прикладі пароль на приватний ключ не ставили, але для застосування на практиці бажано поставити хоч якийсь пароль на id_rsa (секретний ключ).
Копіюємо вміст публічного ключа в файл містить авторизовані ключі:
cat ~ /id_rsa.pub >> ~ / authorized_keys
Зрозуміло всі описані тут маніпуляції, створення RSA ключів і т.п., виконуються на віддаленому сервері, на якому ми і збираємося проходити аутентифікацію по ключам.
Ключі можна створити і на локальній машині, але потім публічний ключ потрібно буде перенести на віддалену ...
конфігурація sshd_config
Під завісу не завадить зазирнути в / etc / ssh / sshd_config і перевірити чи все там готове для авторизації по ключам:
# The default requires explicit activation of protocol 1 Protocol 2 # HostKey for protocol version 1 #HostKey / etc / ssh / ssh_host_key # HostKeys for protocol version 2 HostKey / etc / ssh / ssh_host_rsa_key #HostKey / etc / ssh / ssh_host_dsa_key #HostKey / etc / ssh / ssh_host_ecdsa_key RSAAuthentication yes PubkeyAuthentication yes # The default is to check both. ssh / authorized_keys and. ssh / authorized_keys2 # but this is overridden so installations will only check. ssh / authorized_keys AuthorizedKeysFile% h /. ssh / authorized_keys
Якщо зібралися відключити логін по паролю, тоді в / etc / ssh / sshd_config відключаємо:
PasswordAuthentication no PermitRootLogin no
PuTTY Unable to use key file
Для тих, хто в перший раз на лижах PuTTY - помилка "Unable to use key file" X: \ id_rsa "(OpenSSH SSH-2 private key)" може виникати з кількох причин:
- Неформат SSH версії в якій кувався id_rsa ключ і версії в якій він намагається використовуватися, для SSH-1 і SSH-2 ключі куються в різних форматах;
- Неформат id_rsa ключа для використання в PuTTY, для PuTTY потрібно ключі конвертувати в .ppk формат
Якщо id_rsa генерувався стандартними утилітами з пакету OpenSSH (ssh-keygen -t rsa), то для його використання в SSH клієнта PuTTY він повинен бути експортований в .ppk формат наступним чином (CMD варіант - puttygen id_rsa -o id_rsa.ppk):
- Запускаємо puttygen і завантажуємо туди наш id_rsa приватний ключ, що був створений утилітами з пакету OpenSSH, і, якщо хочемо, ставимо на нього пароль:
- Зберігаємо приватний ключ у форматі .ppk (Save private key):
Тепер після спроби авторизації по ключу нам досить буде ввести логін, а якщо ставили пароль на приватний ключ, то і пароль від приватного ключа відповідно:
login as: shaman Authenticating with public key "imported-openssh-key" Last login: Sat Jan 4 09: 50: 16 2014 from 192.168.231.1 OpenBSD 5.4 (GENERIC) # 37: Tue Jul 30 12:05:01 MDT 2013 Welcome to OpenBSD: The proactively secure Unix-like operating system. Please use the sendbug (1) utility to report bugs in the system. Before reporting a bug, please try to reproduce it with the latest version of the code. With bug reports, please try to ensure that enough information to reproduce the problem is enclosed, and if a known fix for it exists, include that as well. -bash-4.2 $ ------------- login as: sham Authenticating with public key "imported-openssh-key" Passphrase for key "imported-openssh-key": Last login: Sat Jan 4 09: 50: 16 2014 from 192.168.231.1 OpenBSD 5.4 (GENERIC) # 37: Tue Jul 30 12:05:01 MDT 2013 Welcome to OpenBSD: The proactively secure Unix-like operating system. Please use the sendbug (1) utility to report bugs in the system. Before reporting a bug, please try to reproduce it with the latest version of the code. With bug reports, please try to ensure that enough information to reproduce the problem is enclosed, and if a known fix for it exists, include that as well. -bash-4.2 $
Відновити публічний ключ від приватного
Для відновлення публічного ключа (Create a public SSH key from the private key) від уже наявного приватного виконаємо:
ssh-keygen -y -f ~ /.ssh / id_rsa> ~ /.ssh /id_rsa.pub
Авторизація по ключам в 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", а системний журнал отримаємо повідомлення:
Чи не знайдено опис для події з кодом (0) в джерелі (sshd). Можливо, на локальному комп'ютері немає потрібних даних в реєстрі або файлів DLL повідомлень для відображення повідомлень віддаленого комп'ютера. Спробуйте використовувати ключ / AUXSOURCE = для отримання цього опису, - додаткові відомості про це містяться в довідці. У записі події міститься наступна інформація: sshd: PID 1712: error: Received disconnect from 192.168.231.1: 13: Unable to authenticate.
---
Чи не знайдено опис для події з кодом (0) в джерелі (sshd). Можливо, на локальному комп'ютері немає потрібних даних в реєстрі або файлів DLL повідомлень для відображення повідомлень віддаленого комп'ютера. Спробуйте використовувати ключ / AUXSOURCE = для отримання цього опису, - додаткові відомості про це містяться в довідці. У записі події міститься наступна інформація: sshd: PID 1712: Authentication refused: bad ownership or modes for directory / home / user.
Ймовірно, що помилку 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".
Кожен користувач може створювати свої власні ключі, в своєму домашньому каталозі:
C: \ OpenSSHd \ bin> ssh-keygen -t rsa -f / home /% username% /.ssh/id_rsa Generating public / private rsa key pair. Created directory '/home/root/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/root/.ssh/id_rsa. Your public key has been saved in /home/root/.ssh/id_rsa.pub. The key fingerprint is: 9e: f8: 4f: 55: 1a: 5a: 83: a9: b9: 4f: 5f: 5d: 41: 28: 14: 1b root @ local-cab12c5d9 The key's randomart image is: + - [RSA 2048] ---- + | Eo .. | | ..o. | | ... | | . . | | So o. | | oo. + o. . | | .o ++ o. . | | oo .... | | .oooo | + ----------------- + C: \ OpenSSHd \ bin>
Але, для дозволу доступу по ключам тільки адміністратор повинен додати вміст публічного ключа (id_rsa.pub) кожного користувача в / etc / ssh / authorized_keys, ну, і зрозуміло не забуваємо додати користувача в / etc / passwd.
Посилання по темі:
Автор: Олег Головський
Рекомендований контент
×
А тут же ж міг бути рекомендований контент від гугла :) Для відображення рекомендованого контенту необхідно в браузері дозволити виконання JavaScript скриптів , Включаючи скрипти з доменів googlesyndication.com і doubleclick.net
×
Ви не любите рекламу !? Даремно! :) На нашому сайті вона зовсім ненав'язлива, а тому для нашого сайту можете повністю відключити AdBlock (uBlock / uBlock Origin / NoScript) та інші блокувальники реклами! AdBlock / uBlock може перешкоджати нормальній роботі системи пошуку по сайту, відображенню рекомендованого контенту та інших сервісів Google. Рекомендуємо повністю вимкнути функцію блокування реклами і скриптів , А також дозволити фрейми (aka iframe).
про автора
Юрист, програміст, спортсмен, бізнесмен і просто красень.
Ще статті автора