Que tal algo assim?
for u in $USERLIST; do
su $u
ssh-keygen [options] -f /home/$u/.ssh/id_rsa
scp /home/$u/.ssh/id_rsa.pub $REMOTEHOST:/home/$u/.ssh/authorized_keys
exit
done
Claro que isso envolve digitar muitas senhas para o scp. Você poderia fazer tudo como root para evitar digitar senhas (supondo que seu root ssh sem senha está configurado), mas você teria que chown
everything:
for u in $USERLIST; do
ssh-keygen [options] -f /home/$u/.ssh/id_rsa
# assuming "users" is the common group on the system
chown $u:users /home/$u/.ssh/id_rsa
# use -a to preserve ownership
rsync -av /home/$u/.ssh/id_rsa.pub $REMOTEHOST:/home/$u/.ssh/authorized_keys
done
E, claro, você precisa garantir que o diretório pessoal e o diretório .ssh de cada usuário tenham as permissões corretas (em ambas as máquinas) quando terminar.