Muito boa pergunta. Acabei de fazer um pouco de teste e parece que ssh
e autossh
tratam a parte final de "comando" da linha de comando de forma diferente. Por exemplo:
$ ssh 0 ls -ld /tmp
tom@0's password:
drwxrwxrwt 16 root root 4096 2011-06-05 11:17 /tmp
$ autossh 0 ls -ld /tmp
d@'s password:
autossh
está analisando o comando final e interpretando os sinalizadores, em vez de deixá-los sozinhos, como ssh
faz. Nesse caso, ele interpreta -l
como o sinalizador para especificar o usuário remoto. No seu caso, ele está interpretando o -D
como uma opção para o primeiro autossh
, não o segundo.
Você pode contornar isso colocando a parte do comando entre aspas. No seu exemplo:
autossh -t -L2000:localhost:2000 user@host1 "autossh -D 2000 differentuser@host2"