if someone hacks into my computer, he doesn't just get my computer, but my server too?
Isso é potencialmente verdadeiro de qualquer maneira com os keyloggers: assim que você faz o login no seu servidor a partir do computador comprometido, eles recebem a senha.
Mas há 3 vantagens para as chaves:
1) Autenticação em cache. Digite sua senha uma vez, execute vários comandos ssh. Isso é muito útil se você estiver usando algo que usa ssh como transporte, como scp, rsync ou git.
2) Autenticação escalonável. Digite sua frase secreta uma vez, faça login em várias máquinas . Quanto mais máquinas você tiver, mais útil isso é. Se você tem 100 máquinas, o que você faz? Você não pode usar a mesma senha (a menos que seja um farm clone), e você não consegue se lembrar disso. Então você teria que usar um gerenciador de senhas e voltar ao ponto de compromisso único. Efetivamente, a frase secreta de chave é seu gerenciador de senhas.
2b) Ele é dimensionado de outra maneira se você tiver vários administradores usando os mesmos sistemas, porque você pode revogar as chaves do usuário A sem precisar informar que a senha foi alterada por B, C, D, E, F ... .
(Isso também pode ser feito com contas individuais e sudo, mas você precisa provisionar essas contas de alguma forma)
3) Automação e delegação parcial. Você pode configurar o SSH para executar um comando específico quando uma tecla conecta . Isso permite que um processo automatizado no sistema A faça algo no sistema B sem ter confiança total sem senha entre os dois.
(É um substituto para o rlogin / rsh, que era hilário e inseguro)
Editar: outra vantagem para chaves públicas em vez de senhas é o cenário comum em que o servidor é comprometido por meio de uma vulnerabilidade. Nesse caso, o login com uma senha compromete a senha imediatamente. Entrar com uma chave não! Eu diria que isso é mais comum do que a área de trabalho de origem do administrador que está sendo comprometida.