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 Host v ~/.ssh/config včetně HostName, User, IdentityFile a ProxyJump,
  • 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áš:

  1. Otevři Terminál a spusť ssh-keygen -t ed25519. Stiskem Returnu ponech výchozí soubor ~/.ssh/id_ed25519 a zvol heslovou frázi.
  2. Veřejnou polovinu, ~/.ssh/id_ed25519.pub, přidej na serveru do ~/.ssh/authorized_keys, nebo ji pošli správci serveru. Soubor bez .pub nikdy nikomu nedávej.
  3. Vyzkoušej to: ssh user@host by 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

  1. 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.
  2. Přidej -v (ssh -v staging) a uvidíš, které klíče a řádky konfigurace ssh zkouší.
  3. Zkontroluj agenta příkazem ssh-add -l: vypíše klíče, které agent drží.
  4. Zkontroluj oprávnění: ssh odmítá soukromé klíče, které můžou číst jiní uživatelé. Opraví to chmod 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ů.