Como o AnyBucket usa a sua configuração SSH

Não há um repositório de chaves separado para preencher. Para SFTP, o AnyBucket inicia o /usr/bin/ssh, o mesmo programa que o Terminal usa, então:

  • as suas chaves privadas em ~/.ssh funcionam,
  • as chaves carregadas no seu agente SSH funcionam,
  • cada bloco Host do ~/.ssh/config se aplica, incluindo HostName, User, IdentityFile e ProxyJump,
  • as chaves de host são conferidas com o ~/.ssh/known_hosts, que é compartilhado com o Terminal.

A regra prática: se ssh user@host funciona no Terminal, funciona no AnyBucket. As senhas, quando um servidor pede uma, vão para as suas chaves de início de sessão.

Crie uma chave e adicione-a ao servidor

Se você ainda não tem uma chave:

  1. Abra o Terminal e execute ssh-keygen -t ed25519. Pressione Return para manter o arquivo padrão, ~/.ssh/id_ed25519, e escolha uma frase secreta.
  2. Adicione a metade pública, ~/.ssh/id_ed25519.pub, ao ~/.ssh/authorized_keys no servidor, ou envie-a ao administrador do servidor. Nunca compartilhe o arquivo sem .pub.
  3. Teste: ssh user@host deve entrar sem pedir a senha do servidor.

Para não digitar a frase secreta toda vez, adicione a chave ao agente com ssh-add. O macOS pode guardar a frase secreta nas suas Chaves.

Dê nomes aos seus servidores no ~/.ssh/config

Um bloco Host dá a um servidor um nome curto e as configurações para chegar até ele:

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

Agora ssh staging entra como deploy com essa chave. No AnyBucket, conecte ao servidor staging via SFTP e o mesmo bloco se aplica, porque o AnyBucket passa o nome para o ssh exatamente como o Terminal faria.

Chegue a um servidor por um jump host

Muitos servidores só podem ser acessados por um bastião, ou jump host. No Terminal, você escreveria ssh -J bastion app para uma conexão avulsa. Para deixar permanente, use ProxyJump:

Host bastion
  HostName bastion.example.com
  User me

Host app
  HostName 10.0.1.20
  User deploy
  ProxyJump bastion

Teste com ssh app no Terminal. Quando entrar, conecte o AnyBucket a app via SFTP: a conexão passa pelo bastião sozinha, sem nada extra para configurar no app. Vários saltos se encadeiam do mesmo jeito, com uma lista separada por vírgulas depois de ProxyJump.

Chaves de host: "ainda não é conhecida" ou "mudou"

Na primeira vez que você se conecta a um servidor, a chave dele ainda não está no ~/.ssh/known_hosts, e o AnyBucket pergunta antes de confiar nela, como o Terminal faz. Compare a impressão digital com a que o administrador do seu servidor publicou.

Se o AnyBucket disser que uma chave mudou, pare e descubra por quê. Depois que um servidor é reconstruído ou reinstalado, uma chave nova é esperada. Fora isso, não se conecte: uma chave que mudou pode significar que você não está falando com o servidor que imagina. Mais em solução de problemas.

Quando não funciona

  1. Teste no Terminal primeiro exatamente com o nome de host que você usa no AnyBucket: ssh staging. Se falhar, o problema está na configuração SSH, não no app.
  2. Adicione -v (ssh -v staging) para ver quais chaves e linhas de configuração o ssh tenta.
  3. Confira o agente com ssh-add -l: ele lista as chaves que o agente tem.
  4. Confira as permissões: o ssh recusa chaves privadas que outros usuários podem ler. chmod 600 ~/.ssh/id_ed25519 resolve isso.

Ainda com problemas? Veja chaves SFTP ou jump hosts não funcionam, ou envie ao suporte o que o ssh -v mostra, sem nada privado.