【Linux】while read lineでsshコマンドを実行するとループしない

5行のファイルを読み込んでecho出してみると普通にいける
[root@CARMAINE ~]# cat readfile | while read LINE ; do echo $LINE ; done aaa bbb ccc ddd eee
ssh経由でechoしてみると5行読み込んでいるはずが、1行だけ読み込んで抜けてしまっている
[root@CARMAINE ~]# cat readfile | while read LINE ; do ssh 192.168.0.47 echo $LINE ; done aaa [root@CARMAINE ~]#
対処法其の一 「for line in `cat readfile`」でよみこむ
[root@CARMAINE ~]# for line in `cat readfile` ; do ssh 192.168.0.47 echo $line ; done aaa bbb ccc ddd eee
対処法其の二 「ssh -n」オプション(バックグラウンド実行)を使う
[root@CARMAINE ~]# cat readfile | while read LINE ; do ssh -n 192.168.0.47 echo $LINE ; done aaa bbb ccc ddd eee
どうやら、sshコマンド実行時に標準入力が切り替わり、ローカルホストからの標準入力を停止し、リモートホストからの標準入力を受け付けるみたい。
while read line実行時は、ループ処理開始前にファイルを読み込み、その中でsshコマンドを実行、その後再びreadコマンドを実行する際にファイルが既に閉じられているからループを抜けてしまうみたい。
参考
http://www.m-bsys.com/error/whileread-ssh