Конфігурація клієнта
Налаштуйте ~/.ssh/config
Налаштування хост-записів sshдійсно просто і допоможе вам заощадити багато проблем. Ось приклад:
Host digitaloceanbox
Hostname 111.111.111.111
User root
PubKeyAuthentication yes
IdentityFile /home/user/.ssh/digitalocean-rsa
ForwardX11 yes
Host github github.com
Hostname github.com
User git
PubKeyAuthentication yes
IdentityFile /home/user/.ssh/github-rsa
ForwardX11 no
У цьому прикладі ми настройка digitaloceanboxі githubі github.comтак , що ми можемо зробити наступні команди:
ssh github
ssh digitaloceanbox
Якщо ми хочемо увійти як інший користувач, ніж той, який вказаний у конфігураційному файлі, ми просто ставимо user@на початку:
Генерація sshключів
ssh-keygen -t rsa -b 4096 -C user@homemachine
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa): /home/user/.ssh/digitalocean-rsa
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/user/.ssh/digitalocean-rsa
Your public key has been saved in /home/user/.ssh/digitalocean-rsa.pub.
The key fingerprint is:
SHA256:p9PYE/tveF2n//bLbp3ogYDtMtYEC5ziQiPxeob6fbo user@homemachine
Зауважте, що я вказав повний шлях приватного ключа, який я хочу створити, коли буде запропоновано ssh-keygen. Я також визначив коментар ( -C), який дозволяє мені легко ідентифікувати ключі на віддалених машинах.
Це створить два файли:
.ssh/digitalocean-rsa
- ПРИВАТНИЙ ключ. Ніколи не діліться цим .
.ssh/digitalocean-rsa.pub
- Публічний ключ. Це те, що ви зберігаєте на сервері для аутентифікації.
Коли ви надасте свій sshключ, будьте впевнені, що це .pubверсія !! Коли ви додасте до свого ~/.ssh/config, не забудьте додати правильний приватний ключ, який відповідає відкритому ключу, який ви додали до системи.
Конфігурація сервера
Більшість установок матимуть включену автентифікацію відкритих ключів. Якщо ви почнете робити все недоброзичливо, у вас можуть виникнути деякі проблеми. Там, де ОП є їхньою проблемою, я рекомендую ОП видалити /root/.ssh/каталог для початку.
Не рекомендується використовувати sshдля доступу кореневого користувача у віддаленій системі. Рекомендується sshперейти до іншого користувача, а потім перейти до корінця за допомогою свого пароля ( sudo su -).
Додайте ключі для хосту за допомогою ssh-copy-id
Незалежно від того, чи вирішили ви створити іншого користувача та використовувати його sshяк кореневого або кореневого користувача, рекомендований спосіб розміщення sshключів на сервері:
ssh-copy-id -i /home/user/.ssh/digitalocean-rsa.pub user@digitaloceanbox
Це дозволяє sshdстворити каталог та файли, необхідні з необхідними дозволами. Це означає, що для вас є нульовий шанс зіпсувати дозволи чи вам потрібно запам'ятати деталі. Просто використовуйте інструмент для завантаження ключів.
Вимкнути автентифікацію пароля
Зважаючи на це, щойно ви встановили ключ і переконалися, що можете підключитися за допомогою клавіш, рекомендується вимкнути автентифікацію пароля sshdта перезапустити службу:
- Редагувати
/etc/ssh/sshd_config
PasswordAuthentication no
sudo systemctl restart sshd
Що з новими користувачами?
Якщо ви вимкнете автентифікацію пароля, як ви можете дозволити новим користувачам? Один із способів - додати файли шаблонів до /etc/skelкаталогу. Коли ви ввели одного користувача, зробіть наступне:
sudo cp -r .ssh/ /etc/skel/
ls /etc/skel/.ssh
- Відредагуйте будь-які файли, знайдені
/etc/skel/.ssh/так, щоб вони були порожніми, якщо ви не хочете автоматично вводити ключі для кожного новоствореного користувача.
Коли ви створюєте нових користувачів за допомогою sudo useradd -m newuserцього користувача, він матиме те .ssh/authorized_keys, що ви можете редагувати та мати відповідні дозволи.
Налагодження
Ви можете переглянути sshdфайл журналу, щоб дізнатися, чому з’єднання не вдається або відмовляються:
sudo tail -f /var/log/auth.log
Під час виконання цієї команди використовуйте інший термінал для спроби входу. Багато разів надані повідомлення досить хороші, щоб допомогти визначити проблему або знайти рішення в Інтернеті.