netrw and tunneling

82 views
Skip to first unread message

Walter Cazzola

unread,
Aug 9, 2019, 7:07:49 AM8/9/19
to VIM Users ML
Dear Vimmers,
I'm in the situation where I've to remotely administer a server and I would
like to edit the files on my machine via netrw.

I'm already used to "gvim scp://host+path" but in this case the remote server
can be accessed only through one other machine and I've to do a tunnel to edit
them.

I've already tried to add to my .vimrc

let g:netrw_scp_cmd="scp -q -oProxyCommand=\"ssh -W %h:%p tunnel-host\""

but it didn't work. I googled around but seems that this problem never raised.

I'm still on vim 7.4 and I'm using a version of openssh older than 7.3 (this
is why I'm still using ProxyCommand instead of ProxyJump). Unfortunately to
update my linux-box is not an option in the near future.

Any idea?

Thank you
Walter

--

Grant Taylor

unread,
Aug 9, 2019, 12:52:58 PM8/9/19
to vim...@googlegroups.com
On 8/9/19 4:17 AM, Walter Cazzola wrote:
> I'm already used to "gvim scp://host+path" but in this case the remote
> server can be accessed only through one other machine and I've to do a
> tunnel to edit them.
>
> I've already tried to add to my .vimrc
>
>   let g:netrw_scp_cmd="scp -q -oProxyCommand=\"ssh -W %h:%p tunnel-host\""
>
> but it didn't work. I googled around but seems that this problem never
> raised.
>
> I'm still on vim 7.4 and I'm using a version of openssh older
> than 7.3 (this is why I'm still using ProxyCommand instead of
> ProxyJump). Unfortunately to update my linux-box is not an option in
> the near future.
>
> Any idea?

Yes.

Teach OpenSSH how to get to the host by putting entries in the OpenSSH
/client/ configuration file; ~/.ssh/config or system wide
/etc/ssh/ssh_config. E.g.

Host targetHost
ProxyCommand ssh -W %h:%p tunnel-host

Host tunnel-host
# any options you might want here

This teaches any and all OpenSSH clients how to get to targetHost
without needing to specify additional command line options. I.e. you
can run the following command:

gvim scp://targetHost+path

(G)vim doesn't need to worry about /how/ scp connects. OpenSSH's scp
command deals with that transparently.

IMHO the OpenSSH /client/ configuration file opens up a world of
possibilities.

Link - Empowering OpenSSH
-
https://dotfiles.tnetconsulting.net/articles/2015/0506/empowering-openssh.html



--
Grant. . . .
unix || die

Walter Cazzola

unread,
Aug 9, 2019, 1:12:55 PM8/9/19
to 'Grant Taylor' via vim_use
On Fri, 9 Aug 2019, 'Grant Taylor' via vim_use wrote:

>> Any idea?

> Yes.

> Teach OpenSSH how to get to the host by putting entries in the OpenSSH
> /client/ configuration file; ~/.ssh/config or system wide
> /etc/ssh/ssh_config. E.g.

> Host targetHost
> ProxyCommand ssh -W %h:%p tunnel-host

> Host tunnel-host
> # any options you might want here

> This teaches any and all OpenSSH clients how to get to targetHost without
> needing to specify additional command line options. I.e. you can run the
> following command:

> gvim scp://targetHost+path

> (G)vim doesn't need to worry about /how/ scp connects. OpenSSH's scp command
> deals with that transparently.

Good suggestion but isn't this forcing any ssh connection to pass through the
tunnel? I would prefer something less radical or that, at least, I can easily
switch off without touching every time the ssh configuration.

Walter

--

Richard Mitchell

unread,
Aug 9, 2019, 2:08:35 PM8/9/19
to vim_use

The tunnel would only be used for that host, which you already have to get to by going through the intermediate host. It isn't going to force other hosts to go through the same intermediate host.

Regardless, "Host" is only an alias. Call it whatever you want and use it just for vi.

Grant Taylor

unread,
Aug 9, 2019, 10:32:18 PM8/9/19
to vim...@googlegroups.com
On 8/9/19 12:08 PM, Richard Mitchell wrote:
> The tunnel would only be used for that host, which you already have
> to get to by going through the intermediate host. It isn't going to
> force other hosts to go through the same intermediate host.

Correct.

> Regardless, "Host" is only an alias. Call it whatever you want and
> use it just for vi.

Not quite. "Host" is how you define a set of entries that are for a
specific host. The "targetHost" and "tunnel-host" are the names / aliases.

The example ProxyCommand line is associated with the host entry named
"targetHost". Meaning that ssh / scp / sftp to targetHost will use the
entries under the "Host targetHost" line.

Richard Mitchell

unread,
Aug 9, 2019, 11:07:27 PM8/9/19
to vim_use

Yes, I just meant if he was concerned about unintentional use of the tunnel, he could give it a specific Host name that he only used with vi commands. Certainly that name and its associated configuration would be available to ssh/scp/rsync/etc if he used that name with those commands, but he could use names (say with _vi appended) that he only used with vi.

Grant Taylor

unread,
Aug 10, 2019, 12:51:47 AM8/10/19
to vim...@googlegroups.com
On 8/9/19 9:07 PM, Richard Mitchell wrote:
> Yes, I just meant if he was concerned about unintentional use of the
> tunnel, he could give it a specific Host name that he only used with
> vi commands. Certainly that name and its associated configuration
> would be available to ssh/scp/rsync/etc if he used that name with
> those commands, but he could use names (say with _vi appended) that
> he only used with vi.

Ah. Agreed.
Reply all
Reply to author
Forward
0 new messages