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
Hostw~/.ssh/config, w tymHostName,User,IdentityFileiProxyJump, - 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:
- 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. - Dodaj część publiczną,
~/.ssh/id_ed25519.pub, do~/.ssh/authorized_keysna serwerze albo wyślij ją administratorowi serwera. Nigdy nie udostępniaj pliku bez.pub. - Sprawdź:
ssh user@hostpowinno 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
- 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. - Dodaj
-v(ssh -v staging), aby zobaczyć, jakie klucze i wiersze konfiguracji próbujessh. - Sprawdź agenta poleceniem
ssh-add -l: wyświetla klucze, które ma agent. - Sprawdź uprawnienia:
sshodrzuca klucze prywatne, które mogą odczytać inni użytkownicy.chmod 600 ~/.ssh/id_ed25519to 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.