Tente isso (novas linhas opcionais):
cat ~/.ssh/id_rsa.pub |
ssh <REMOTE> "cat > tmp.pubkey ;
mkdir -p .ssh ;
touch .ssh/authorized_keys ;
sed -i.bak -e '/$(awk '{print $NF}' ~/.ssh/id_rsa.pub)/d' .ssh/authorized_keys;
cat tmp.pubkey >>.ssh/authorized_keys;
rm tmp.pubkey"
Certifique-se de substituir <REMOTE> pelo nome do host ao qual você está tentando se conectar. Altere também id_rsa.pub para qualquer que seja a sua chave de publicação.
Casos abordados por este:
- O host remoto pode não ter um diretório
.ssh -
authorized_keysarquivo pode não existir - Se o
authorized_keysexistir e você quiser substituir / atualizar / adicionar sua chave pública ssh, isso funcionará sem duplicar a entrada. Este script substitui uma entrada, se já houver uma com o mesmo comentário.