---
description: це не основна замітка
---

# SSH-доступ по ключу

## \~/.ssh/config

Файл `~/.ssh/config` є конфігураційним файлом для OpenSSH, який дозволяє налаштовувати параметри підключення до віддалених серверів. Ось приклад структури цього файлу:

```plaintext
# Коментар: рядок, який починається з символу '#' - це коментар, ігнорується

# Загальні налаштування
Host *
  ForwardAgent yes   # Активувати агент для перенаправлення ключа

# Налаштування для конкретного хоста
Host example.com
  HostName example.com   # Адреса хоста
  User username          # Ім'я користувача
  Port 22                # Порт для підключення
  IdentityFile ~/.ssh/id_rsa  # Шлях до приватного ключа

# Додаткові налаштування для іншого хоста
Host another-host.com
  HostName another-host.com
  User another_username
  Port 2222
  IdentityFile ~/.ssh/another_id_rsa

# Використання псевдонімів для хостів
Host alias
  HostName alias.com
  User alias_user
  Port 1234
  IdentityFile ~/.ssh/alias_key

# Налаштування стиснення та обмеження пропускної здатності
Host example.com
  Compression yes
  CompressionLevel 6
  IPQoS lowdelay throughput

# Приклад використання проксі
Host proxy-example
  HostName example.com
  User username
  Port 22
  IdentityFile ~/.ssh/id_rsa
  ProxyJump proxy-server.example.com:2222

# Налаштування підключення через бастион-хост (jump host)
Host target-host
  HostName target-host.com
  User target_user
  Port 22
  IdentityFile ~/.ssh/target_id_rsa
  ProxyJump bastion-host.com:2222
```

Зверніть увагу, що ви можете вказувати різні параметри для різних хостів або груп хостів. Це дозволяє гнучко налаштовувати підключення до різних серверів.

## Пароль може бути записаний у цей файл?

Ні, ви не повинні включати пароль у файл конфігурації SSH (`~/.ssh/config`). Зазвичай, цей файл використовується для конфігурування параметрів підключення, таких як ім'я хоста, порт, користувач тощо, але не для зберігання паролів.

Для аутентифікації зазвичай використовують ключі SSH (SSH keys) або інші методи, такі як введення паролю під час спроби підключення. Зберігати паролі в текстовому файлі, особливо в домашньому каталозі, є небезпечною практикою з погляду безпеки. Якщо файл конфігурації доступний іншим користувачам чи системним процесам, це може представляти ризик.

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

## Як налаштувати SSH з’єднання на використання ключа SSH?

Щоб налаштувати SSH з'єднання для використання ключа SSH, вам слід виконати кілька кроків:

1.  **Генерація ключа SSH:** Використайте команду `ssh-keygen` для генерації пари ключів (приватного та публічного). Зазвичай за замовчуванням ці ключі зберігаються в домашньому каталозі користувача у підкаталозі `.ssh/`. Використовуйте таку команду:

    ```bash
    ssh-keygen -t rsa -b 2048 -f ~/.ssh/id_rsa
    ```

    В цьому прикладі генерується ключ типу RSA з довжиною 2048 біт, і ім'я файлу для приватного ключа буде `id_rsa`, а для публічного - `id_rsa.pub`.
2.  **Додавання ключа до агента SSH:** Додайте приватний ключ до агента SSH, щоб уникнути введення паролю кожен раз при з'єднанні. Використовуйте команду:

    ```bash
    ssh-add ~/.ssh/id_rsa
    ```
3.  **Копіювання публічного ключа на сервер:** Скопіюйте вміст файлу `~/.ssh/id_rsa.pub` на віддалений сервер. Ви можете зробити це вручну або використовувати команду `ssh-copy-id`. Наприклад:

    ```bash
    ssh-copy-id username@remote_server
    ```

    Замініть `username` на ваше ім'я користувача та `remote_server` на адресу або ім'я сервера.
4.  **Налаштування файлу конфігурації SSH:** Відредагуйте або створіть файл `~/.ssh/config` та додайте конфігураційні параметри. Наприклад:

    ```plaintext
    Host remote_server
      HostName example.com
      User username
      IdentityFile ~/.ssh/id_rsa
    ```

    Знову замініть `remote_server`, `example.com`, `username` і `~/.ssh/id_rsa` на ваші дані.
5.  **Тестування з'єднання:** Використайте команду `ssh` для тестування з'єднання:

    ```bash
    ssh remote_server
    ```

    Якщо все налаштовано правильно, вас повинно бути ввідено в систему без введення пароля.

Тепер ваше SSH з'єднання повинно використовувати ключ для автентифікації. Важливо зауважити, що приватний ключ (`~/.ssh/id_rsa`) повинен залишатися конфіденційним і не повинен бути доступним для інших користувачів.
