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_keys
arquivo pode não existir - Se o
authorized_keys
existir 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.