Você tem dois programas em seu loop, ambos lendo stdin: read e ssh. Quando o loop for executado, o comando read lerá a primeira linha do ssh_hosts.txt, e o ssh fará o resto. É por isso que você só o vê conectado ao primeiro host.
Eu conheço duas soluções para esse problema. Uma é reescrever seu loop para que ele não redirecione de stdin. Uma boa maneira de fazer isso é com o loop for
que o eggo tem em seu post.
A outra solução é passar a opção -n
para ssh
:
ssh -n $USER@$ssh_host 'echo $(whoami)@$(hostname)'
Isto diz ao ssh para não usar o stdin, deixando o conteúdo completo do seu ssh_hosts.txt para o comando read. Esta solução requer que suas sessões ssh não requeiram qualquer interação com o usuário, incluindo a solicitação de uma senha (portanto, use as chaves ssh para autenticação).