ssh "!command" escape sequence - does it work?

Gary Aitken ubuntu at dreamchaser.org
Fri Sep 11 03:35:22 UTC 2020


On 9/10/20 9:43 AM, Chris Green wrote:
> On Thu, Sep 10, 2020 at 04:28:56PM +0100, Colin Watson wrote:
>> On Thu, Sep 10, 2020 at 03:19:19PM +0100, Chris Green wrote:
>>> In the man page for ssh_config it says:-
>>>
>>>       PermitLocalCommand
>>> Allow local command execution via the LocalCommand option or using the
>> !command escape sequence in
>>>         ssh(1).  The argument must be yes or no (the default).
>>>
>>> Can anyone point me at something that tells me about "... the !command
>>> escape sequence in ssh(1)" please.
>>
>> Here's the relevant bit of documentation from that manual page.  Does
>> this help?
>>
>> ESCAPE CHARACTERS
>>       When a pseudo-terminal has been requested, ssh supports a number of
>>       functions through the use of an escape character.
>>
>>       A single tilde character can be sent as ~~ or by following the tilde by a
>>       character other than those described below.  The escape character must
>>       always follow a newline to be interpreted as special.  The escape
>>       character can be changed in configuration files using the EscapeChar
>>       configuration directive or on the command line by the -e option.
>>
>>       The supported escapes (assuming the default ‘~’) are:
>>
>> [...]
>>
>>       ~C      Open command line.  Currently this allows the addition of port
>>               forwardings using the -L, -R and -D options (see above).  It also
>>               allows the cancellation of existing port-forwardings with
>>               -KL[bind_address:]port for local, -KR[bind_address:]port for
>>               remote and -KD[bind_address:]port for dynamic port-forwardings.
>>               !command allows the user to execute a local command if the
>>               PermitLocalCommand option is enabled in ssh_config(5).  Basic
>>               help is available, using the -h option.
>>
> Yes, I found that, but I can't make "!command" do *anythin*, let alone
> anything helpful. The only things that seem to work after ~C are '-h'
> and the forwarding commands, ordinary shell commands just do nothing.

Do you have "PermitLocalCommand" set to yes in ~/.ssh/config?  On my system the
default in /etc/ssh/ssh_config is no.

Gary





More information about the ubuntu-users mailing list