Como posso usar a autenticação de chave pública para acessar um servidor ssh no Android?

Como posso usar a autenticação de chave pública para acessar um servidor ssh no Android?

Meu telefone Android 4.4.2 (é antigo, mas não pode ser atualizado) executa um servidor SSH pelo aplicativo SimpleSSHD. Ele gera senhas aleatórias diferentes a cada login, o que é muito inconveniente para mim como usuário cliente. Então, eu gostaria de usar autenticação de chave pública.

Anteriormente, gerei um par de chaves públicas e privadas para acessar um servidor SSH. Acho que não há problema em reutilizar o par de chaves, então copio o arquivo da chave pública para o telefone Android:

$ ssh-copy-id -p 2222 192.168.1.87
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/t/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
[email protected]'s password: 
restorecon: invalid option -- F
usage:  restorecon [-nrRv] pathname...

Depois disso, ainda preciso digitar senhas aleatórias geradas pelo servidor para fazer login.

Copiar o arquivo de chave pública para o telefone Android não funciona?

Em qual diretório do telefone Android deve ir o arquivo de chave pública?

Obrigado.

Responder1

Este não é um problema com o Android. Acredito que a convenção de inserir chaves ~/.ssh/authorized_keysvem do OpenSSH. Não acredito que faça parte do padrão (RFCs). SimpleSSHDtem uma convenção diferente:

Começo rápido

  • Instale o SimpleSSHD.
  • Em qualquer computador que se conectará ao seu dispositivo Android, defina a porta para 2222. Com OpenSSH, isso pode ser feito colocando estas linhas em ~/.ssh/config:

    Host myphone
    Port 2222
    
  • Inicie o SimpleSSHD e, em Configurações, ative "Iniciar na inicialização" e, em seguida, inicie-o manualmente pela primeira vez.

  • Crie authorized_keysno diretório inicial (não use ssh-copy-id)
  • Opcionalmente, faça .profile

A inferência disso é que seus arquivos de chaves autorizadas ~/authorized_keysnão deveriam ser ~/.ssh/authorized_keys.

ssh-copy-idparece assumir que todo servidor é um servidor OpenSSH. Como você já definiu sua chave pública usando ssh-copy-id, basta fazer login e executar:

mv ~/.ssh/authorized_keys ~

informação relacionada