Hi, on Linux (Ubuntu 8.04), when I start ssh as a background shell job
(I have passwordless login set up), by hitting enter a couple of times,
after about 3 seconds since the original command is issued I see that
the ssh process is suspended:

$ ssh hv sleep 30 &
[1] 22468
$
$
$

[1]+ Stopped ssh hv sleep 30
$

Now if I have something that's continuously producing stdout, then I see
the output until after about 3 seconds in:

$ ssh hv 'while true; do echo a; sleep 1; done' &
[1] 22486
$ a

$ a
a
a
a
a
a

[1]+ Stopped ssh hv 'while true; do echo a; sleep 1; done'
$

Attempts to bg it don't work:

$ bg
[1]+ ssh hv 'while true; do echo a; sleep 1; done' &
$

[1]+ Stopped ssh hv 'while true; do echo a; sleep 1; done'
$

And fg can bring it back, but only after hitting enter:

$ ssh hv 'while true; do echo a; sleep 1; done' &
[1] 22596
$ a
a
a


[1]+ Stopped ssh hv 'while true; do echo a; sleep 1; done'
$ fg
ssh hv 'while true; do echo a; sleep 1; done'
"a"s are immediately dumped>
a
a
a
a
a
a
a


Furthermore, I can't kill this process using sigint, sigterm, sigquit, etc.:

$ ps
PID TTY TIME CMD
22515 pts/3 00:00:00 ssh
22546 pts/3 00:00:00 ps
32443 pts/3 00:00:03 bash
$ kill 22515
$
$

But I can kill it with the shell's job control kill:

$ kill %1
$
[1]+ Exit 143 ssh hv 'while true; do echo a; sleep 1; done'
$

Alternatively, I could fg the job, at which point it will immediately
exit (handle the queued-up signals). Could anyone help explain this
behavior? I'm interested in writing scripts to run commands remotely
via ssh, but I clearly don't get how to control ssh. If it matters,
this is all in "OpenSSH_4.7p1 Debian-8ubuntu1, OpenSSL 0.9.8g 19 Oct
2007". Thanks in advance for any guidance!