Eu gosto de um desafio. Sim, você pode fazer isso, se estiver disposto a deixar o primeiro ssh falhar. O seguinte script (que eu realmente testei) coroa o log sshd, que por padrão (no meu sistema) produz linhas como esta em um login com falha ssh:
Jun 20 21:06:35 home sshd[18163]: Invalid user dummy from ::1
Quando essa linha é correspondida, o ID do usuário (fictício neste exemplo) é extraído e uma conta de usuário é criada com uma senha criptografada que é o mesmo que o id do usuário (fictício). Uma segunda tentativa de login agora funcionará.
# encrypt a cleartext password given as arg
cryptpw(){
perl -e '
my $pw = "'"$1"'";
my $salt = join("",("a".."z")[rand 26,rand 26]);
printf "%s\n", crypt($pw,$salt);'
}
sudo journalctl --no-pager -lfu sshd |
while read line
do if [[ "$line" =~ "Invalid user "([^ ]*) ]]
then newuser=${BASH_REMATCH[1]}
pw=$(cryptpw "$newuser")
sudo useradd "$newuser" -p "$pw"
fi
done
O usuário pode então copiar sua chave para o controle remoto:
ssh-copy-id dummy@host
Se eles ainda não tiverem uma chave, faça primeiro:
ssh-keygen -t rsa -f ~/.ssh/id_rsa -q -N ''