Остаточне керівництво по SSH - Налаштування ключів SSH

Ласкаво просимо до нашого остаточного посібника з налаштування ключів SSH (Secure Shell). Цей посібник проведе вас через основи створення ключів SSH, а також як керувати кількома ключами та парами ключів.

Створіть нову пару ключів SSH

Відкрийте термінал і запустіть таку команду:

ssh-keygen

Ви побачите такий текст:

Generating public/private rsa key pair. Enter file in which to save the key (/home/username/.ssh/id_rsa):

Натисніть клавішу Enter, щоб зберегти ключі до /home/username/.sshкаталогу за замовчуванням .

Потім вам буде запропоновано ввести пароль:

Enter passphrase (empty for no passphrase):

Для додаткового рівня безпеки тут рекомендується ввести пароль. Встановивши пароль, ви можете запобігти несанкціонованому доступу до ваших серверів та облікових записів, якщо хтось коли-небудь отримає ваш приватний ключ SSH або вашу машину.

Після введення та підтвердження пароля ви побачите таке:

Your identification has been saved in /home/username/.ssh/id_rsa. Your public key has been saved in /home/username/.ssh/id_rsa.pub. The key fingerprint is: SHA256:/qRoWhRcIBTw0D4KpTUyK6YepyL6RQ2CQrtWsaicCb4 [email protected] The key's randomart image is: +---[RSA 2048]----+ | .o=+.... | |+.*o+o . | |+X.=o o | |@.=.oo . | |=O ...o S | |o.oo . . | |.E+ . . . . | |oo . ... + | |=.. .o. . . | +----[SHA256]-----+

Тепер у вас є загальнодоступна та приватна пара ключів SSH, яку ви можете використовувати для доступу до віддалених серверів та для обробки автентифікації для програм командного рядка, таких як Git.

Управління кількома ключами SSH

Хоча вважається гарною практикою мати лише одну пару відкрито-приватних ключів на пристрій, іноді вам потрібно використовувати кілька ключів або у вас є незвичні імена ключів. Наприклад, ви можете використовувати одну пару ключів SSH для роботи над внутрішніми проектами вашої компанії, але ви можете використовувати інший ключ для доступу до серверів клієнта. Крім того, ви можете використовувати іншу пару ключів для доступу до власного приватного сервера.

Управління ключами SSH може стати громіздким, як тільки потрібно буде використовувати другий ключ. Традиційно ви б використовували ssh-addдля зберігання ваших ключів ssh-agent, вводячи пароль для кожного ключа. Проблема в тому, що вам доведеться робити це щоразу при перезавантаженні комп’ютера, що може швидко стати нудним.

Кращим рішенням є автоматизація додавання ключів, зберігання паролів та вказівка ​​того, який ключ використовувати під час доступу до певних серверів.

SSH config

Введіть SSH config, який є файлом конфігурації для кожного користувача для зв'язку SSH. Створіть новий файл: ~/.ssh/configі відкрийте його для редагування:

nano ~/.ssh/config

Керування спеціальним іменованим ключем SSH

Перше, що ми збираємося вирішити за допомогою цього configфайлу, це уникнути необхідності додавати спеціально названі ключі SSH за допомогою ssh-add. Припускаючи, що ваш приватний ключ SSH названий ~/.ssh/id_rsa, додайте до configфайлу наступне :

Host github.com HostName github.com User git IdentityFile ~/.ssh/id_rsa IdentitiesOnly yes

Потім переконайтеся, що ~/.ssh/id_rsaйого немає ssh-agent, відкривши інший термінал і виконавши таку команду:

ssh-add -D

Ця команда видалить усі ключі з поточно активного ssh-agentсеансу.

Тепер, якщо ви спробуєте закрити сховище GitHub, у вашому configфайлі буде використовуватися ключ на ~/.ssh/ida_rsa.

Ось деякі інші корисні приклади конфігурації:

Host bitbucket-corporate HostName bitbucket.org User git IdentityFile ~/.ssh/id_rsa_corp IdentitiesOnly yes

Тепер ви можете використовувати git clone [email protected]:company/project.git

Host bitbucket-personal HostName bitbucket.org User git IdentityFile ~/.ssh/id_rsa_personal IdentitiesOnly yes

Тепер ви можете використовувати git clone [email protected]:username/other-pi-project.git

Host myserver HostName ssh.username.com Port 1111 IdentityFile ~/.ssh/id_rsa_personal IdentitiesOnly yes User username IdentitiesOnly yes

Тепер ви можете SSH на ваш сервер за допомогою ssh myserver. Вам більше не потрібно вводити порт та ім’я користувача щоразу, коли ви SSH на своєму приватному сервері.

Керування паролем

Остання частина загадки - це управління паролями. Введення пароля може бути дуже нудним кожного разу, коли ви ініціалізуєте з'єднання SSH. Щоб обійти це, ми можемо використовувати програмне забезпечення для управління паролями, яке постачається з macOS та різними дистрибутивами Linux.

Для цього підручника ми використовуватимемо програму доступу Keychain від macOS. Почніть з додавання ключа до Keychain Access, передавши -Kопцію ssh-addкоманді:

ssh-add -K ~/.ssh/id_rsa_whatever

Тепер ви можете побачити свій ключ SSH у Доступі до брелока:

Доступ до брелока

Але якщо ви видалите ключі від ssh-agentс ssh-add -Dабо перезавантаження комп'ютера, вам буде запропоновано ввести пароль ще раз , коли ви намагаєтеся використовувати SSH. Виявляється, є ще один обруч, через який можна стрибнути. Відкрийте ваш configфайл SSH , запустивши nano ~/.ssh/configта додайте наступне:

Host * AddKeysToAgent yes UseKeychain yes

Зважаючи на це, кожен раз, коли ви запускаєте, sshвін буде шукати ключі в Доступі брелоків. Якщо він знайде його, вам більше не буде запропоновано ввести пароль. Ключі також автоматично додаватимуться під ssh-agentчас кожного перезавантаження машини.

Тепер, коли ви знаєте основи створення нових ключів SSH та керування кількома ключами, виходьте sshдо душі!