In your comment on fons's answer, you say that it doesn't work while using
Could you elaborate on that? Looking at the source code for openssh, sshd executes the command by calling
YOUR_DEFAULT_SHELL -c COMMAND
So, for example, if your default shell is
screen, then this won't work all that well because
-c flag just overrides its
.scrreenrc. So, there's really no way to send commands to screen if it's your default shell. You'll have to actually run screen as the command given to ssh, but with a default shell that isn't screen.
If that's what you're trying to do, I think things will get really weird, since
screen will also close windows with non-interactive programs, so you'll have to do a similar trick to fons's, but one level deeper. SO, with, e.g. /bin/bash (and not screen) as your default shell Something like:
ssh user@host -t 'screen bash -l -c "ls;bash"'
Which should --take a deep breath-- ssh into the host, run bash -c with a command of screen, which will make a new window. If this window just opened up ls, it would end, and screen would terminate, so we use fons's trick inside the new screen window.
I think that'll work, if that's even what you were trying to do ;)