Onde adicionar chaves SSH para permitir conexões com o servidor remoto no Android?
10
Estou usando um kernel Android raiz personalizado (Gingerbread) e consigo conectar-me a um servidor SSH remoto com autenticação de senha usando o busybox e um aplicativo emulador de terminal. Eu gostaria de poder usar chaves SSH para login automático; Isso é possível? Em caso afirmativo, onde devo colocar minha chave privada?
Não é tão fácil, mas o sshbinário fornecido pelo busybox (pelo menos o meu) suporta a -isinalização, para que você possa colocar a chave onde quiser e usar isso:
A entrada de página de manual relevante para -i(com a ressalva de que as informações sobre o caminho padrão podem não ser as mesmas no Android):
-i identity_file
Selects a file from which the identity (private key) for public
key authentication is read. The default is ~/.ssh/identity for
protocol version 1, and ~/.ssh/id_dsa, ~/.ssh/id_ecdsa and
~/.ssh/id_rsa for protocol version 2. Identity files may also be
specified on a per-host basis in the configuration file. It is
possible to have multiple -i options (and multiple identities
specified in configuration files). ssh will also try to load
certificate information from the filename obtained by appending
-cert.pub to identity filenames.
Obrigado, pensei nisso, mas nunca tentei. Parece estranho que não exista um lugar para o comando ssh procurar o diretório .ssh ... talvez seja porque não há um conjunto $ HOME?
Yuttadhammo
2
@Yuttadhammo: O estranho é que $HOME(para root) está definido /datano meu telefone, mas sshparece ignorar todos os diretórios que tento configurar lá. Eu realmente nunca descobri o porquê disso, mas também não precisei me aprofundar nisso.
Eldarerathis
@Yuttadhammo No meu telefone, echo $HOMEnão retorna nada (mesmo para root). Se esse também é o seu caso, é por isso que seu cliente SSH não pode ver as chaves por padrão. Mas, com o -isinalizador, você pode substituir o caminho padrão, para que não faça sentido procurar $ HOME. Esta é a solução correta se o seu cliente SSH reduzido o suportar. Então, tente depois de colocar as chaves no sdcard. Se falhar, não há outra maneira, a menos que você altere o cliente SSH.
Android Quesito
Ótimo. Trabalhou para mim.
user20203293928832
6
Instale e execute o ConnectBot (um cliente SSH dedicado). Toque / pressione a tecla Menu. No menu, toque em Manage Pubkeys. Na próxima tela, pressione novamente / toque na tecla menu. No menu, toque em Import.
Obrigado, eu realmente fiz isso - aplicativo legal; não há como simplesmente colocar uma chave em algum lugar e fazer com que o busybox a pegue?
Yuttadhammo
@Yuttadhammo Não acho que a embalagem padrão do Busybox forneça um cliente SSH. Você pode ser mais específico com seu cliente SSH (que pode ser um utilitário externo)?
Android Quesito
Além disso, lembre-se .. como os applets do busybox são reduzidos para versões originais, seu cliente SSH da linha de comando pode não suportar autenticação com chave, mas é muito improvável. Apenas me fale sobre seu cliente SSH.
Android Quesito
Obrigado, o ConnectBot é a solução que eu usarei, mas o sinalizador -i está realmente mais perto de responder à pergunta.
$HOME
(para root) está definido/data
no meu telefone, masssh
parece ignorar todos os diretórios que tento configurar lá. Eu realmente nunca descobri o porquê disso, mas também não precisei me aprofundar nisso.echo $HOME
não retorna nada (mesmo para root). Se esse também é o seu caso, é por isso que seu cliente SSH não pode ver as chaves por padrão. Mas, com o-i
sinalizador, você pode substituir o caminho padrão, para que não faça sentido procurar $ HOME. Esta é a solução correta se o seu cliente SSH reduzido o suportar. Então, tente depois de colocar as chaves no sdcard. Se falhar, não há outra maneira, a menos que você altere o cliente SSH.Instale e execute o ConnectBot (um cliente SSH dedicado). Toque / pressione a tecla Menu. No menu, toque em
Manage Pubkeys
. Na próxima tela, pressione novamente / toque na tecla menu. No menu, toque emImport
.fonte