Esses dois não são iguais.
exec é um shell embutido que executará o comando fornecido ssh localhost neste caso com a substituição do shell atual pelo comando.
Ao fazer o simples ssh localhost você está executando o comando geral ssh , não há sinos e assobios associados.
O efeito será aparente quando você for logout da sessão ssh :
-
No caso de
exec ssh localhost, o shell será substituído porssh lcoalhost, depois dosshvocê obterá um shell como de costume. Ao sair da sessão de shellssh, por exemplo, porlogoutouexitvocê não voltará ao shell pai, ou seja, a partir do shell que você executouexec ssh localhost, como já foi substituído. Então, você simplesmente perderá essa guia / janela do terminal. -
Por outro lado, para
ssh localhost, como você não está substituindo o shell pai porssh localhost, então após o logout você voltará ao shell pai, isto é, o shell do chamador.