Estou tentando configurar minha Gen 1 Cloud Key (CK) para permitir autenticação sem senha para que eu possa executar um script bash para baixar arquivos de autobackup. Eu consigo fazer SSH na CK "manualmente" e também com meu script bash usando nome de usuário/senha, mas isso armazenaria as credenciais em texto simples, o que eu (obviamente) não quero fazer.
Eu tenho:
- gerou as chaves na minha máquina local (MBP Sequoia 15.1.1) com
ssh-keygen -t rsa
, - copiou a chave pública para o arquivo CK
~/.ssh/authorized_keys
, - modificado
/etc/ssh/sshd_config
para incluir as seguintes linhas (não comentadas):RSAAuthentication yes
,PubkeyAuthentication yes
, eAuthorizedKeysFile .ssh/authorized_keys
, - reiniciou o ssh no CK com
sudo systemctl restart sshd
, - permissões verificadas com
chmod 700 ~/.ssh
echmod 600 ~/.ssh/authorized_keys
.
Mas ainda sem alegria. O log SSH diz,
...
debug1: Next authentication method: publickey
debug1: get_agent_identities: bound agent to hostkey
debug1: get_agent_identities: ssh_fetch_identitylist: agent contains no identities
debug1: Will attempt key: /Users/Hank/.ssh/id_rsa RSA SHA256:KEY_VALUE_REDACTED
debug1: Will attempt key: /Users/Hank/.ssh/id_ecdsa
debug1: Will attempt key: /Users/Hank/.ssh/id_ecdsa_sk
debug1: Will attempt key: /Users/Hank/.ssh/id_ed25519
debug1: Will attempt key: /Users/Hank/.ssh/id_ed25519_sk
debug1: Will attempt key: /Users/Hank/.ssh/id_xmss
debug1: Will attempt key: /Users/Hank/.ssh/id_dsa
debug1: Offering public key: /Users/Hank/.ssh/id_rsa RSA SHA256:KEY_VALUE_REDACTED
debug1: send_pubkey_test: no mutual signature algorithm
debug1: Trying private key: /Users/Hank/.ssh/id_ecdsa
debug1: Trying private key: /Users/Hank/.ssh/id_ecdsa_sk
debug1: Trying private key: /Users/Hank/.ssh/id_ed25519
debug1: Trying private key: /Users/Hank/.ssh/id_ed25519_sk
debug1: Trying private key: /Users/Hank/.ssh/id_xmss
debug1: Trying private key: /Users/Hank/.ssh/id_dsa
debug1: Next authentication method: password
[email protected]'s password:
...
e então ainda sou solicitado a digitar uma senha. Acredito que a pista para o problema esteja nesta linha:
nenhum algoritmo de assinatura mútua
Isso significa que as instâncias de SSH nos dois dispositivos são incompatíveis e, portanto, usar autenticação baseada em chave não é possível? Parece que deveria ser simples, mas algo não está certo.
TLDR; O software do controlador Unifi suporta autenticação baseada em chave SSH, mas isso só se aplica à conexão a dispositivos de rede como APs, switches e roteadores. O CK é um cliente e aparentemente não é possível atingir meu objetivo por meio do software do controlador.
Há muita conversa em torno dessa abordagem, mas nada parece abordar esse problema específico.
EDIT: Eu encontrei isso, o que está me levando a acreditar que meu CK (que é reconhecidamente antigo) pode ser a fonte do problema. Atualizar o ssh no CK, embora teoricamente possível, é uma solução abaixo do ideal porque eu esperaria que futuras atualizações de firmware sobrescrevessem quaisquer alterações intermediárias.
A resposta é usar algo diferente de RSA?
EDIT2 : Solução - FTF, aqui estão os comandos revisados que funcionaram no meu caso:
- Gerar par de chaves:
ssh-keygen -t ed25519
- Copie a chave pública para o servidor:
ssh-copy-id -i ~/.ssh/id_ed25519.pub [email protected]
- Verifique as permissões:
chmod 700 ~/.ssh
echmod 600 ~/.ssh/authorized_keys
- Reiniciar:
sudo systemctl restart sshd
(pode não ser necessário)