Jak AnyBucket korzysta z Twojej konfiguracji SSH

Nie ma osobnego magazynu kluczy do wypełnienia. Dla SFTP AnyBucket uruchamia /usr/bin/ssh, ten sam program, którego używa Terminal, więc:

  • działają Twoje klucze prywatne w ~/.ssh,
  • działają klucze załadowane do agenta SSH,
  • obowiązuje każdy blok Host w ~/.ssh/config, w tym HostName, User, IdentityFile i ProxyJump,
  • klucze hostów są sprawdzane w ~/.ssh/known_hosts, który Terminal współdzieli.

Prosta zasada: jeśli ssh user@host działa w Terminalu, działa w AnyBucket. Hasła, gdy serwer o nie poprosi, trafiają do pęku kluczy login.

Utwórz klucz i dodaj go na serwerze

Jeśli nie masz jeszcze klucza:

  1. Otwórz Terminal i uruchom ssh-keygen -t ed25519. Naciśnij Return, aby zachować domyślny plik ~/.ssh/id_ed25519, i wybierz hasło klucza.
  2. Dodaj część publiczną, ~/.ssh/id_ed25519.pub, do ~/.ssh/authorized_keys na serwerze albo wyślij ją administratorowi serwera. Nigdy nie udostępniaj pliku bez .pub.
  3. Sprawdź: ssh user@host powinno zalogować się bez pytania o hasło do serwera.

Aby nie wpisywać hasła klucza za każdym razem, dodaj klucz do agenta poleceniem ssh-add. macOS może przechowywać hasło klucza w Twoim pęku kluczy.

Nazwij serwery w ~/.ssh/config

Blok Host nadaje serwerowi krótką nazwę i ustawienia potrzebne do połączenia:

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

Teraz ssh staging loguje się jako deploy tym kluczem. W AnyBucket połącz się przez SFTP z serwerem staging, a zadziała ten sam blok, bo AnyBucket przekazuje nazwę do ssh tak samo jak Terminal.

Dostęp do serwera przez jump host

Do wielu serwerów można dotrzeć tylko przez bastion, czyli jump host (host pośredniczący). W Terminalu do jednorazowego połączenia wystarczy ssh -J bastion app. Aby ustawić to na stałe, użyj ProxyJump:

Host bastion
  HostName bastion.example.com
  User me

Host app
  HostName 10.0.1.20
  User deploy
  ProxyJump bastion

Sprawdź to poleceniem ssh app w Terminalu. Gdy logowanie działa, połącz AnyBucket z app przez SFTP: połączenie samo przejdzie przez bastion, bez dodatkowych ustawień w aplikacji. Kilka przeskoków łączy się tak samo, podając po ProxyJump listę rozdzieloną przecinkami.

Klucze hostów: „nie jest jeszcze znany” lub „się zmienił”

Przy pierwszym połączeniu z serwerem jego klucza nie ma jeszcze w ~/.ssh/known_hosts, więc AnyBucket pyta, zanim mu zaufa, tak jak Terminal. Porównaj odcisk z tym, który opublikował administrator serwera.

Jeśli AnyBucket mówi, że klucz się zmienił, zatrzymaj się i ustal dlaczego. Po przebudowie lub ponownej instalacji serwera nowy klucz jest czymś oczekiwanym. W innym przypadku nie łącz się: zmieniony klucz może oznaczać, że nie rozmawiasz z serwerem, z którym myślisz. Więcej w rozwiązywaniu problemów.

Gdy to nie działa

  1. Najpierw spróbuj w Terminalu z dokładnie tą nazwą hosta, której używasz w AnyBucket: ssh staging. Jeśli to zawodzi, problem leży w konfiguracji SSH, a nie w aplikacji.
  2. Dodaj -v (ssh -v staging), aby zobaczyć, jakie klucze i wiersze konfiguracji próbuje ssh.
  3. Sprawdź agenta poleceniem ssh-add -l: wyświetla klucze, które ma agent.
  4. Sprawdź uprawnienia: ssh odrzuca klucze prywatne, które mogą odczytać inni użytkownicy. chmod 600 ~/.ssh/id_ed25519 to naprawia.

Nadal nie działa? Zobacz klucze SFTP lub jump hosty nie działają albo napisz do wsparcia, dołączając wynik ssh -v bez prywatnych danych.