Як AnyBucket використовує ваше налаштування SSH

Окремого сховища ключів, яке треба заповнювати, немає. Для SFTP AnyBucket запускає /usr/bin/ssh — ту саму програму, що й Термінал, тож:

  • ваші приватні ключі в ~/.ssh працюють,
  • ключі, завантажені у ваш SSH-агент, працюють,
  • кожен блок Host у ~/.ssh/config застосовується, зокрема HostName, User, IdentityFile і ProxyJump,
  • ключі хостів звіряються з ~/.ssh/known_hosts, який використовує й Термінал.

Просте правило: якщо ssh user@host працює в Терміналі, воно працює і в AnyBucket. Паролі, коли сервер їх просить, зберігаються у вашій зв’язці ключів входу.

Створіть ключ і додайте його на сервер

Якщо у вас ще немає ключа:

  1. Відкрийте Термінал і виконайте ssh-keygen -t ed25519. Натисніть Return, щоб залишити типовий файл ~/.ssh/id_ed25519, і задайте парольну фразу.
  2. Додайте публічну половину, ~/.ssh/id_ed25519.pub, до ~/.ssh/authorized_keys на сервері або надішліть її адміністраторові сервера. Ніколи не передавайте файл без .pub.
  3. Перевірте: ssh user@host має входити, не питаючи пароль сервера.

Щоб не вводити парольну фразу щоразу, додайте ключ до агента командою ssh-add. macOS може зберігати парольну фразу у вашій зв’язці ключів.

Дайте серверам імена в ~/.ssh/config

Блок Host дає серверу коротке ім’я й параметри, потрібні, щоб до нього дістатися:

Host staging
  HostName staging.example.com
  User deploy
  IdentityFile ~/.ssh/id_ed25519

Тепер ssh staging входить як deploy з цим ключем. В AnyBucket під’єднайтеся до сервера staging через SFTP, і застосується той самий блок, бо AnyBucket передає ім’я в ssh так само, як Термінал.

Доступ до сервера через проміжний хост

До багатьох серверів можна дістатися лише через bastion, тобто проміжний хост (jump host). У Терміналі для одноразового з’єднання ви написали б ssh -J bastion app. Щоб зробити це постійним, використовуйте ProxyJump:

Host bastion
  HostName bastion.example.com
  User me

Host app
  HostName 10.0.1.20
  User deploy
  ProxyJump bastion

Перевірте командою ssh app у Терміналі. Щойно вхід вдається, під’єднайте AnyBucket до app через SFTP: з’єднання саме пройде через bastion, і в програмі нічого додатково налаштовувати не треба. Кілька переходів поєднуються так само — списком через кому після ProxyJump.

Ключі хостів: "ще невідомий" або "змінився"

Під час першого з’єднання із сервером його ключа ще немає в ~/.ssh/known_hosts, і AnyBucket, як і Термінал, запитує, перш ніж йому довіряти. Звірте відбиток з тим, який опублікував адміністратор вашого сервера.

Якщо AnyBucket повідомляє, що ключ змінився, зупиніться й з’ясуйте чому. Після того як сервер перебудували чи перевстановили, новий ключ очікуваний. В іншому разі не під’єднуйтеся: змінений ключ може означати, що ви говорите не з тим сервером, з яким думаєте. Докладніше — в усуненні проблем.

Коли не працює

  1. Спершу спробуйте Термінал з точно тим ім’ям хоста, яке використовуєте в AnyBucket: ssh staging. Якщо не вдається, проблема в налаштуванні SSH, а не в програмі.
  2. Додайте -v (ssh -v staging), щоб побачити, які ключі й рядки конфігурації пробує ssh.
  3. Перевірте агент командою ssh-add -l: вона показує ключі, які тримає агент.
  4. Перевірте права доступу: ssh відмовляється від приватних ключів, які можуть читати інші користувачі. chmod 600 ~/.ssh/id_ed25519 це виправляє.

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