user3 @ host3 pode ter tantas chaves públicas ssh quanto elas gostam de conceder acesso à sua conta. Alguns podem ser protegidos por senha, outros não.
Cada chave tem uma parte pública e privada. As chaves serão geradas pelo usuário1 e pelo usuário2, a metade pública será dada ao usuário3. O User3 pode adicionar essas chaves ao seu arquivo authorized_keys. se a chave é protegida por senha ou não é determinada pela chave privada, não pela pública. Então, se user3 recebe uma chave pública do user1, eles não têm como saber se ela é protegida por senha ou não, AFAIK.
Você pode executar algumas restrições dentro do arquivo authorised_keys em máquinas individuais, conforme descrito na seção 'authorized_keys: restringindo acesso' aqui
Digamos, por exemplo, que você queria ter certeza de que user1 só poderia se conectar a partir de host1 e user2 do host2 que você poderia colocar em
from="host1" <user1 public key>
from="host2" <user2 public key>
se a chave privada for comprometida ou roubada para o usuário1 ou usuário2, eles não poderão se conectar de nenhuma outra máquina.
Não tenho certeza de como isso é bom, mas pode valer a pena pesquisar scponly que parece impedir o acesso ao shell aos usuários que você só quer ter acesso scp para.