Jak AnyBucket používá tvoje nastavení SSH
Žádné zvláštní úložiště klíčů tu nevyplňuješ. Pro SFTP spouští AnyBucket /usr/bin/ssh, stejný program, jaký používá Terminál, takže:
- fungují tvoje soukromé klíče v
~/.ssh, - fungují klíče načtené v tvém agentovi SSH,
- platí každý blok
Hostv~/.ssh/configvčetněHostName,User,IdentityFileaProxyJump, - klíče hostitelů se ověřují podle
~/.ssh/known_hosts, který sdílí s Terminálem.
Pravidlo: když v Terminálu funguje ssh user@host, funguje i v AnyBucket. Hesla, pokud si o ně server řekne, se ukládají do tvé přihlašovací klíčenky.
Vytvoř klíč a přidej ho na server
Pokud ještě klíč nemáš:
- Otevři Terminál a spusť
ssh-keygen -t ed25519. Stiskem Returnu ponech výchozí soubor~/.ssh/id_ed25519a zvol heslovou frázi. - Veřejnou polovinu,
~/.ssh/id_ed25519.pub, přidej na serveru do~/.ssh/authorized_keys, nebo ji pošli správci serveru. Soubor bez.pubnikdy nikomu nedávej. - Vyzkoušej to:
ssh user@hostby se mělo přihlásit, aniž by chtělo heslo k serveru.
Abys nemusel pokaždé psát heslovou frázi, přidej klíč do agenta příkazem ssh-add. macOS umí heslovou frázi uchovat v tvé klíčence.
Pojmenuj servery v ~/.ssh/config
Blok Host dá serveru krátký název a nastavení, jak se k němu dostat:
Host staging
HostName staging.example.com
User deploy
IdentityFile ~/.ssh/id_ed25519
Teď se ssh staging přihlásí jako deploy s tímto klíčem. V AnyBucket se přes SFTP připoj k serveru staging a platí stejný blok, protože AnyBucket předá název ssh úplně stejně jako Terminál.
Přístup k serveru přes jump host
Na spoustu serverů se dá dostat jen přes bastion, tedy jump host. V Terminálu bys jednorázově napsal ssh -J bastion app. Natrvalo to zařídí ProxyJump:
Host bastion
HostName bastion.example.com
User me
Host app
HostName 10.0.1.20
User deploy
ProxyJump bastion
Vyzkoušej to v Terminálu příkazem ssh app. Jakmile se přihlásí, připoj AnyBucket přes SFTP k app: spojení půjde přes bastion samo a v aplikaci nic dalšího nenastavuješ. Více skoků se řetězí stejně, čárkami oddělený seznam za ProxyJump.
Klíče hostitelů: „zatím neznámý“, nebo „změnil se“
Když se k serveru připojíš poprvé, jeho klíč ještě v ~/.ssh/known_hosts není a AnyBucket se stejně jako Terminál zeptá, než mu začne důvěřovat. Porovnej otisk s tím, který zveřejnil správce serveru.
Pokud AnyBucket hlásí, že se klíč změnil, zastav se a zjisti proč. Po přestavbě nebo přeinstalaci serveru je nový klíč očekávaný. Jinak se nepřipojuj: změněný klíč může znamenat, že nemluvíš se serverem, se kterým si myslíš. Více v řešení potíží.
Když to nefunguje
- Zkus nejdřív Terminál s přesně tím názvem hostitele, který používáš v AnyBucket:
ssh staging. Pokud selže, problém je v nastavení SSH, ne v aplikaci. - Přidej
-v(ssh -v staging) a uvidíš, které klíče a řádky konfiguracesshzkouší. - Zkontroluj agenta příkazem
ssh-add -l: vypíše klíče, které agent drží. - Zkontroluj oprávnění:
sshodmítá soukromé klíče, které můžou číst jiní uživatelé. Opraví tochmod 600 ~/.ssh/id_ed25519.
Pořád nic? Podívej se na nefunkční klíče SFTP nebo jump hosty, nebo napiš podpoře, co ukazuje ssh -v, bez soukromých údajů.