all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* bug#66667: [PATCH] Socket forwarding in emacsclient --tramp-prefix example
@ 2023-10-21 15:01 Peter Oliver
  2023-10-21 16:57 ` Michael Albinus
                   ` (2 more replies)
  0 siblings, 3 replies; 11+ messages in thread
From: Peter Oliver @ 2023-10-21 15:01 UTC (permalink / raw)
  To: 66667; +Cc: Peter Oliver

Previously, the emacsclient --tramp-prefix documentation suggested
using it in conjunction with a forwarded TCP port.  However, OpenSSH
has supported forwarding sockets since version 6.7 (released 2014), so
let’s suggest that instead.  Sockets require less manual configuration
than ports, are less likely to clash, and are more secure, so will be
a better choice for the majority of people looking to set up this
facility for the first time.

* doc/emacs/misc.texi (emacsclient Options): Suggest forwarding sockets.
---
 doc/emacs/misc.texi | 18 ++++++++----------
 1 file changed, 8 insertions(+), 10 deletions(-)

diff --git a/doc/emacs/misc.texi b/doc/emacs/misc.texi
index a05b7f6c6ea..93771832ff5 100644
--- a/doc/emacs/misc.texi
+++ b/doc/emacs/misc.texi
@@ -2158,8 +2158,9 @@ emacsclient Options
 Set the prefix to add to filenames for Emacs to locate files on remote
 machines (@pxref{Remote Files}) using TRAMP (@pxref{Top, The Tramp
 Manual,, tramp, The Tramp Manual}).  This is mostly useful in
-combination with using the Emacs server over TCP (@pxref{TCP Emacs
-server}).  By ssh-forwarding the listening port and making the
+combination with using the Emacs server from a remote host.  By
+ssh-forwarding the listening socket, or ssh-forwarding the listening
+port @pxref{TCP Emacs server} and making the
 @var{server-file} available on a remote machine, programs on the
 remote machine can use @command{emacsclient} as the value for the
 @env{EDITOR} and similar environment variables, but instead of talking
@@ -2171,16 +2172,13 @@ emacsclient Options
 effect as using the @samp{-T} option.  If both are specified, the
 command-line option takes precedence.
 
-For example, assume two hosts, @samp{local} and @samp{remote}, and
-that the local Emacs listens on tcp port 12345.  Assume further that
-@file{/home} is on a shared file system, so that the server file
-@file{~/.emacs.d/server/server} is readable on both hosts.
+For example, assume two hosts, @samp{local} and @samp{remote}.
 
 @example
-local$ ssh -R12345:localhost:12345 remote
-remote$ export EDITOR="emacsclient \
-        --server-file=server \
-        --tramp=/ssh:remote:"
+local$ ssh -R "/tmp/emacs-%r.socket":"$@{XDG_RUNTIME_DIR:-$@{TMPDIR:-/tmp@}/emacs%i@}$@{XDG_RUNTIME_DIR:+/emacs@}/server" remote
+remote$ export EMACS_SOCKET_NAME=/tmp/emacs-$USER.socket
+remote$ export EMACSCLIENT_TRAMP=/ssh:remote:
+remote$ export EDITOR=emacsclient
 remote$ $EDITOR /tmp/foo.txt #Should open in local emacs.
 @end example
 
-- 
2.41.0






^ permalink raw reply related	[flat|nested] 11+ messages in thread

* bug#66667: [PATCH] Socket forwarding in emacsclient --tramp-prefix example
  2023-10-21 15:01 bug#66667: [PATCH] Socket forwarding in emacsclient --tramp-prefix example Peter Oliver
@ 2023-10-21 16:57 ` Michael Albinus
  2023-10-21 19:28   ` Peter Oliver
  2023-10-22  1:05 ` Björn Bidar via Bug reports for GNU Emacs, the Swiss army knife of text editors
       [not found] ` <65347577.5d0a0220.ab2d6.0249SMTPIN_ADDED_BROKEN@mx.google.com>
  2 siblings, 1 reply; 11+ messages in thread
From: Michael Albinus @ 2023-10-21 16:57 UTC (permalink / raw)
  To: Peter Oliver; +Cc: 66667, Peter Oliver

Peter Oliver <p.d.oliver@mavit.org.uk> writes:

Hi Peter,

> Previously, the emacsclient --tramp-prefix documentation suggested
> using it in conjunction with a forwarded TCP port.  However, OpenSSH
> has supported forwarding sockets since version 6.7 (released 2014), so
> let’s suggest that instead.  Sockets require less manual configuration
> than ports, are less likely to clash, and are more secure, so will be
> a better choice for the majority of people looking to set up this
> facility for the first time.

Thanks for this. However, I don't believe we shall document this instead
of server ports. Better would be to document both variants. The reason
is, that sockets don't exists on every platform, see the "#ifdef
SOCKETS_IN_FILE_SYSTEM" directive in emacsclient.c.

Furthermore, people might run older sshd servers on remote systems,
which don't support socket forwarding. It must be also at least OpenSSH
6.7, like the client on the local side. Think about routers, NAS
systems, and alike, which aren't upgraded over years. As Tramp
maintainer I know what I'm speaking about.

The %TOKEN percent expansion (your %r and %i tokens) exists since
OpenSSH 8.2 only.

Best regards, Michael.





^ permalink raw reply	[flat|nested] 11+ messages in thread

* bug#66667: [PATCH] Socket forwarding in emacsclient --tramp-prefix example
  2023-10-21 16:57 ` Michael Albinus
@ 2023-10-21 19:28   ` Peter Oliver
  2023-10-22  7:43     ` Michael Albinus
  0 siblings, 1 reply; 11+ messages in thread
From: Peter Oliver @ 2023-10-21 19:28 UTC (permalink / raw)
  To: Michael Albinus; +Cc: 66667

[-- Attachment #1: Type: text/plain, Size: 633 bytes --]

On Sat, 21 Oct 2023, Michael Albinus wrote:

> Think about routers, NAS systems, and alike, which aren't upgraded over
> years.

You’re right about these kinds of systems, of course, but the old example already left a lot as an exercise for the reader: it assumes that you’d suitably configured server-port and server-use-tcp, then somehow made ~/.emacs.d/server/server accessible to the client.  Deciding on a suitable ssh -R argument for TCP forwarding doesn’t seem like the hardest part.

So, I’m not certain that one and a half examples is better than one complete example, but, anyway, here’s an updated patch.

-- 
Peter Oliver

[-- Attachment #2: Type: text/plain, Size: 3398 bytes --]

From 067a516fa2d0020170b97602d93eb9f589086d01 Mon Sep 17 00:00:00 2001
From: Peter Oliver <git@mavit.org.uk>
Date: Sat, 21 Oct 2023 15:55:03 +0100
Subject: [PATCH] Socket forwarding in emacsclient --tramp-prefix example
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Previously, the emacsclient --tramp-prefix documentation suggested
using it in conjunction with a forwarded TCP port.  However, OpenSSH
has supported forwarding sockets since version 6.7 (released 2014), so
let’s suggest that instead.  Sockets require less manual configuration
than ports, are less likely to clash, and are more secure, so will be
a better choice for the majority of people looking to set up this
facility for the first time.

* doc/emacs/misc.texi (emacsclient Options): Suggest forwarding sockets.
---
 doc/emacs/misc.texi | 27 ++++++++++++++++++++-------
 1 file changed, 20 insertions(+), 7 deletions(-)

diff --git a/doc/emacs/misc.texi b/doc/emacs/misc.texi
index a05b7f6c6ea..df206b00dcc 100644
--- a/doc/emacs/misc.texi
+++ b/doc/emacs/misc.texi
@@ -2158,8 +2158,9 @@ emacsclient Options
 Set the prefix to add to filenames for Emacs to locate files on remote
 machines (@pxref{Remote Files}) using TRAMP (@pxref{Top, The Tramp
 Manual,, tramp, The Tramp Manual}).  This is mostly useful in
-combination with using the Emacs server over TCP (@pxref{TCP Emacs
-server}).  By ssh-forwarding the listening port and making the
+combination with using the Emacs server from a remote host.  By
+ssh-forwarding the listening socket, or ssh-forwarding the listening
+port @pxref{TCP Emacs server} and making the
 @var{server-file} available on a remote machine, programs on the
 remote machine can use @command{emacsclient} as the value for the
 @env{EDITOR} and similar environment variables, but instead of talking
@@ -2171,16 +2172,28 @@ emacsclient Options
 effect as using the @samp{-T} option.  If both are specified, the
 command-line option takes precedence.
 
-For example, assume two hosts, @samp{local} and @samp{remote}, and
-that the local Emacs listens on tcp port 12345.  Assume further that
+For example, assume two hosts, @samp{local} and @samp{remote}.
+
+@example
+local$ ssh -R "/tmp/emacs-%r.socket":"$@{XDG_RUNTIME_DIR:-$@{TMPDIR:-/tmp@}/emacs%i@}$@{XDG_RUNTIME_DIR:+/emacs@}/server" remote
+remote$ export EMACS_SOCKET_NAME=/tmp/emacs-$USER.socket
+remote$ export EMACSCLIENT_TRAMP=/ssh:remote:
+remote$ export EDITOR=emacsclient
+remote$ $EDITOR /tmp/foo.txt #Should open in local emacs.
+@end example
+
+If you are using a platform that does not have Unix domain sockets
+(i.e., MS-Windows), or SSH implementations that are not able to
+forward them (e.g., OpenSSH before version 6.7), you can forward a TCP
+port instead.  In this example, assume that the local Emacs listens on
+tcp port 12345.  Assume further that
 @file{/home} is on a shared file system, so that the server file
 @file{~/.emacs.d/server/server} is readable on both hosts.
 
 @example
 local$ ssh -R12345:localhost:12345 remote
-remote$ export EDITOR="emacsclient \
-        --server-file=server \
-        --tramp=/ssh:remote:"
+remote$ export EMACSCLIENT_TRAMP=/ssh:remote:
+remote$ export EDITOR=emacsclient
 remote$ $EDITOR /tmp/foo.txt #Should open in local emacs.
 @end example
 
-- 
2.41.0


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* bug#66667: [PATCH] Socket forwarding in emacsclient --tramp-prefix example
  2023-10-21 15:01 bug#66667: [PATCH] Socket forwarding in emacsclient --tramp-prefix example Peter Oliver
  2023-10-21 16:57 ` Michael Albinus
@ 2023-10-22  1:05 ` Björn Bidar via Bug reports for GNU Emacs, the Swiss army knife of text editors
       [not found] ` <65347577.5d0a0220.ab2d6.0249SMTPIN_ADDED_BROKEN@mx.google.com>
  2 siblings, 0 replies; 11+ messages in thread
From: Björn Bidar via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2023-10-22  1:05 UTC (permalink / raw)
  To: Peter Oliver; +Cc: 66667, Peter Oliver

Peter Oliver <p.d.oliver@mavit.org.uk> writes:

> Previously, the emacsclient --tramp-prefix documentation suggested
> using it in conjunction with a forwarded TCP port.  However, OpenSSH
> has supported forwarding sockets since version 6.7 (released 2014), so
> let’s suggest that instead.  Sockets require less manual configuration
> than ports, are less likely to clash, and are more secure, so will be
> a better choice for the majority of people looking to set up this
> facility for the first time.
>
> * doc/emacs/misc.texi (emacsclient Options): Suggest forwarding sockets.
> ---
>  doc/emacs/misc.texi | 18 ++++++++----------
>  1 file changed, 8 insertions(+), 10 deletions(-)
>
> diff --git a/doc/emacs/misc.texi b/doc/emacs/misc.texi
> index a05b7f6c6ea..93771832ff5 100644
> --- a/doc/emacs/misc.texi
> +++ b/doc/emacs/misc.texi
> @@ -2158,8 +2158,9 @@ emacsclient Options
>  Set the prefix to add to filenames for Emacs to locate files on remote
>  machines (@pxref{Remote Files}) using TRAMP (@pxref{Top, The Tramp
>  Manual,, tramp, The Tramp Manual}).  This is mostly useful in
> -combination with using the Emacs server over TCP (@pxref{TCP Emacs
> -server}).  By ssh-forwarding the listening port and making the
> +combination with using the Emacs server from a remote host.  By
> +ssh-forwarding the listening socket, or ssh-forwarding the listening
> +port @pxref{TCP Emacs server} and making the
>  @var{server-file} available on a remote machine, programs on the
>  remote machine can use @command{emacsclient} as the value for the
>  @env{EDITOR} and similar environment variables, but instead of talking
> @@ -2171,16 +2172,13 @@ emacsclient Options
>  effect as using the @samp{-T} option.  If both are specified, the
>  command-line option takes precedence.
>  
> -For example, assume two hosts, @samp{local} and @samp{remote}, and
> -that the local Emacs listens on tcp port 12345.  Assume further that
> -@file{/home} is on a shared file system, so that the server file
> -@file{~/.emacs.d/server/server} is readable on both hosts.
> +For example, assume two hosts, @samp{local} and @samp{remote}.
>  
>  @example
> -local$ ssh -R12345:localhost:12345 remote
> -remote$ export EDITOR="emacsclient \
> -        --server-file=server \
> -        --tramp=/ssh:remote:"
> +local$ ssh -R "/tmp/emacs-%r.socket":"$@{XDG_RUNTIME_DIR:-$@{TMPDIR:-/tmp@}/emacs%i@}$@{XDG_RUNTIME_DIR:+/emacs@}/server" remote
> +remote$ export EMACS_SOCKET_NAME=/tmp/emacs-$USER.socket
If the host has run /run/user it would make sense to setup the Emacs
socket inside this directory.
If the socket fie is in /tmp every other user can read it, using /run/user is
more secure.
On older systems this might be /var/run/user I think.

> +remote$ export EMACSCLIENT_TRAMP=/ssh:remote:
> +remote$ export EDITOR=emacsclient
>  remote$ $EDITOR /tmp/foo.txt #Should open in local emacs.
>  @end example





^ permalink raw reply	[flat|nested] 11+ messages in thread

* bug#66667: [PATCH] Socket forwarding in emacsclient --tramp-prefix example
  2023-10-21 19:28   ` Peter Oliver
@ 2023-10-22  7:43     ` Michael Albinus
  2023-10-22  9:26       ` Eli Zaretskii
  0 siblings, 1 reply; 11+ messages in thread
From: Michael Albinus @ 2023-10-22  7:43 UTC (permalink / raw)
  To: Peter Oliver; +Cc: 66667

Peter Oliver <p.d.oliver@mavit.org.uk> writes:

Hi Peter,

> So, I’m not certain that one and a half examples is better than one complete example, but, anyway, here’s an updated patch.

Thanks. LGTM, just two nits:

> +If you are using a platform that does not have Unix domain sockets
> +(i.e., MS-Windows), or SSH implementations that are not able to

I'm not sure whether MS-Windows supports UNIX domain sockets or not. Eli
might know this.

> +forward them (e.g., OpenSSH before version 6.7), you can forward a TCP
> +port instead.  In this example, assume that the local Emacs listens on
> +tcp port 12345.  Assume further that
>  @file{/home} is on a shared file system, so that the server file
>  @file{~/.emacs.d/server/server} is readable on both hosts.
>
>  @example
>  local$ ssh -R12345:localhost:12345 remote
> -remote$ export EDITOR="emacsclient \
> -        --server-file=server \
> -        --tramp=/ssh:remote:"
> +remote$ export EMACSCLIENT_TRAMP=/ssh:remote:
> +remote$ export EDITOR=emacsclient

Here we need also

remote$ export EMACS_SERVER_FILE=server

Otherwise, the "Implicit local socket" rule comes to play, see
set_socket in emacsclient.c.

Otherwise, it is fine. Eli, can we still install it in the emacs-29 branch?

And another question. You have already contributed to Emacs. That
contribution, and your proposed changes here and in bug#66598 bring you
close to the limit of changes (~15 lines), which are accepted without
formal paperwork. In order to make further contributions from you
possible: would you like to assign the copyright of your future
contributions to the Free Software Foundation?

> Peter Oliver

Best regards, Michael.





^ permalink raw reply	[flat|nested] 11+ messages in thread

* bug#66667: [PATCH] Socket forwarding in emacsclient --tramp-prefix example
  2023-10-22  7:43     ` Michael Albinus
@ 2023-10-22  9:26       ` Eli Zaretskii
  2023-10-22 16:53         ` Peter Oliver
  0 siblings, 1 reply; 11+ messages in thread
From: Eli Zaretskii @ 2023-10-22  9:26 UTC (permalink / raw)
  To: Michael Albinus; +Cc: 66667, p.d.oliver

> Cc: 66667@debbugs.gnu.org
> From: Michael Albinus <michael.albinus@gmx.de>
> Date: Sun, 22 Oct 2023 09:43:20 +0200
> 
> > +If you are using a platform that does not have Unix domain sockets
> > +(i.e., MS-Windows), or SSH implementations that are not able to
> 
> I'm not sure whether MS-Windows supports UNIX domain sockets or not.

It supports them only ion latest builds of Windows 10 and 11.

> Eli, can we still install it in the emacs-29 branch?

Yes, thanks.





^ permalink raw reply	[flat|nested] 11+ messages in thread

* bug#66667: [PATCH] Socket forwarding in emacsclient --tramp-prefix example
  2023-10-22  9:26       ` Eli Zaretskii
@ 2023-10-22 16:53         ` Peter Oliver
  2024-01-10 10:14           ` Michael Albinus via Bug reports for GNU Emacs, the Swiss army knife of text editors
  0 siblings, 1 reply; 11+ messages in thread
From: Peter Oliver @ 2023-10-22 16:53 UTC (permalink / raw)
  To: Michael Albinus; +Cc: 66667, Eli Zaretskii

[-- Attachment #1: Type: text/plain, Size: 702 bytes --]

On Sun, 22 Oct 2023, Eli Zaretskii wrote:

>> Cc: 66667@debbugs.gnu.org
>> From: Michael Albinus <michael.albinus@gmx.de>
>> Date: Sun, 22 Oct 2023 09:43:20 +0200
>>
>>> +If you are using a platform that does not have Unix domain sockets
>>> +(i.e., MS-Windows), or SSH implementations that are not able to
>>
>> I'm not sure whether MS-Windows supports UNIX domain sockets or not.
>
> It supports them only ion latest builds of Windows 10 and 11.

I see from lib-src/emacsclient.c that they’re used only if SOCKETS_IN_FILE_SYSTEM is defined, which is only the case if WINDOWSNT is not defined.  I’ll update the wording not to imply that they don’t exist, only that we don’t use them.

-- 
Peter Oliver

^ permalink raw reply	[flat|nested] 11+ messages in thread

* bug#66667: [PATCH] Socket forwarding in emacsclient --tramp-prefix example
       [not found] ` <65347577.5d0a0220.ab2d6.0249SMTPIN_ADDED_BROKEN@mx.google.com>
@ 2023-10-22 17:09   ` Peter Oliver
  2024-04-08 11:26     ` Peter Oliver
  0 siblings, 1 reply; 11+ messages in thread
From: Peter Oliver @ 2023-10-22 17:09 UTC (permalink / raw)
  To: Björn Bidar; +Cc: 66667

[-- Attachment #1: Type: text/plain, Size: 1317 bytes --]

On Sun, 22 Oct 2023, Björn Bidar wrote:

>>  @example
>> -local$ ssh -R12345:localhost:12345 remote
>> -remote$ export EDITOR="emacsclient \
>> -        --server-file=server \
>> -        --tramp=/ssh:remote:"
>> +local$ ssh -R "/tmp/emacs-%r.socket":"$@{XDG_RUNTIME_DIR:-$@{TMPDIR:-/tmp@}/emacs%i@}$@{XDG_RUNTIME_DIR:+/emacs@}/server" remote
>> +remote$ export EMACS_SOCKET_NAME=/tmp/emacs-$USER.socket
>
> If the host has run /run/user it would make sense to setup the Emacs
> socket inside this directory.
> On older systems this might be /var/run/user I think.

It would, sure, but you can’t in general tell from the local side whether the remote side has /run, nor what your UID is there.  You’d need an extra round trip, for which you need ssh’s ControlPersist option to make performant.  This is too complicated for a simple example.

> If the socket fie is in /tmp every other user can read it, using /run/user is
> more secure.

No, the socket will have permissions 0700, so other users won’t be able to read it.  The risk is that other users will be able to cause a nuisance by creating a file of the same name in its place.  Perhaps it’s better to suggest putting the socket in the user’s home directory (which I originally discounted in case of shared NFS home directories)?

-- 
Peter Oliver

^ permalink raw reply	[flat|nested] 11+ messages in thread

* bug#66667: [PATCH] Socket forwarding in emacsclient --tramp-prefix example
  2023-10-22 16:53         ` Peter Oliver
@ 2024-01-10 10:14           ` Michael Albinus via Bug reports for GNU Emacs, the Swiss army knife of text editors
  0 siblings, 0 replies; 11+ messages in thread
From: Michael Albinus via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-01-10 10:14 UTC (permalink / raw)
  To: Peter Oliver; +Cc: 66667-done, Eli Zaretskii

Version: 29.2

Peter Oliver <p.d.oliver@mavit.org.uk> writes:

> I see from lib-src/emacsclient.c that they’re used only if
> SOCKETS_IN_FILE_SYSTEM is defined, which is only the case if WINDOWSNT
> is not defined.  I’ll update the wording not to imply that they don’t
> exist, only that we don’t use them.

Documentation was adapted in the emacs-29 branch, so I'm closing the
bug.

Best regards, Michael.





^ permalink raw reply	[flat|nested] 11+ messages in thread

* bug#66667: [PATCH] Socket forwarding in emacsclient --tramp-prefix example
  2023-10-22 17:09   ` Peter Oliver
@ 2024-04-08 11:26     ` Peter Oliver
  2024-04-10  8:48       ` Michael Albinus via Bug reports for GNU Emacs, the Swiss army knife of text editors
  0 siblings, 1 reply; 11+ messages in thread
From: Peter Oliver @ 2024-04-08 11:26 UTC (permalink / raw)
  To: 66667

[-- Attachment #1: Type: text/plain, Size: 1518 bytes --]

On Sun, 22 Oct 2023, Peter Oliver wrote:

> On Sun, 22 Oct 2023, Björn Bidar wrote:
>
>>>  @ example
>>>  -local$ ssh -R12345:localhost:12345 remote
>>>  -remote$ export EDITOR="emacsclient \
>>>  -        --server-file=server \
>>>  -        --tramp=/ssh:remote:"
>>>  +local$ ssh -R
>>>  "/tmp/emacs-%r.socket":"$@{XDG_RUNTIME_DIR:-$@{TMPDIR:-/tmp@}/emacs%i@}$@{XDG_RUNTIME_DIR:+/emacs@}/server"
>>>  remote
>>>  +remote$ export EMACS_SOCKET_NAME=/tmp/emacs-$USER.socket
>>
>>  If the host has run /run/user it would make sense to setup the Emacs
>>  socket inside this directory.
>>  On older systems this might be /var/run/user I think.
>
> It would, sure, but you can’t in general tell from the local side whether the 
> remote side has /run, nor what your UID is there.  You’d need an extra round 
> trip, for which you need ssh’s ControlPersist option to make performant. 
> This is too complicated for a simple example.
>
>>  If the socket fie is in /tmp every other user can read it, using /run/user
>>  is
>>  more secure.
>
> No, the socket will have permissions 0700, so other users won’t be able to 
> read it.  The risk is that other users will be able to cause a nuisance by 
> creating a file of the same name in its place.  Perhaps it’s better to 
> suggest putting the socket in the user’s home directory (which I originally 
> discounted in case of shared NFS home directories)?

Here is an update patch that does that.

I’m not sure why this bug was closed already.

-- 
Peter Oliver

[-- Attachment #2: Type: text/plain, Size: 3459 bytes --]

From 7a9be6ae81e7ac36d02a9a39330c8e2a609d40ca Mon Sep 17 00:00:00 2001
From: Peter Oliver <git@mavit.org.uk>
Date: Sat, 21 Oct 2023 15:55:03 +0100
Subject: [PATCH] Socket forwarding in emacsclient --tramp-prefix example
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Previously, the emacsclient --tramp-prefix documentation suggested
using it in conjunction with a forwarded TCP port.  However, OpenSSH
has supported forwarding sockets since version 6.7 (released 2014), so
let’s suggest that instead.  Sockets require less manual configuration
than ports, are less likely to clash, and are more secure, so will be
a better choice for the majority of people looking to set up this
facility for the first time.

* doc/emacs/misc.texi (emacsclient Options): Suggest forwarding sockets.
---
 doc/emacs/misc.texi | 28 +++++++++++++++++++++-------
 1 file changed, 21 insertions(+), 7 deletions(-)

diff --git a/doc/emacs/misc.texi b/doc/emacs/misc.texi
index a05b7f6c6ea..6321beed619 100644
--- a/doc/emacs/misc.texi
+++ b/doc/emacs/misc.texi
@@ -2158,8 +2158,9 @@ emacsclient Options
 Set the prefix to add to filenames for Emacs to locate files on remote
 machines (@pxref{Remote Files}) using TRAMP (@pxref{Top, The Tramp
 Manual,, tramp, The Tramp Manual}).  This is mostly useful in
-combination with using the Emacs server over TCP (@pxref{TCP Emacs
-server}).  By ssh-forwarding the listening port and making the
+combination with using the Emacs server from a remote host.  By
+ssh-forwarding the listening socket, or ssh-forwarding the listening
+port @pxref{TCP Emacs server} and making the
 @var{server-file} available on a remote machine, programs on the
 remote machine can use @command{emacsclient} as the value for the
 @env{EDITOR} and similar environment variables, but instead of talking
@@ -2171,16 +2172,29 @@ emacsclient Options
 effect as using the @samp{-T} option.  If both are specified, the
 command-line option takes precedence.
 
-For example, assume two hosts, @samp{local} and @samp{remote}, and
-that the local Emacs listens on tcp port 12345.  Assume further that
+For example, assume two hosts, @samp{local} and @samp{remote}.
+
+@example
+local$ ssh -R "/home/%r/.emacs.socket":"$@{XDG_RUNTIME_DIR:-$@{TMPDIR:-/tmp@}/emacs%i@}$@{XDG_RUNTIME_DIR:+/emacs@}/server" remote
+remote$ export EMACS_SOCKET_NAME=$HOME/.emacs.socket
+remote$ export EMACSCLIENT_TRAMP=/ssh:remote:
+remote$ export EDITOR=emacsclient
+remote$ $EDITOR /tmp/foo.txt #Should open in local emacs.
+@end example
+
+If you are using a platform where @command{emacsclient} does not use
+Unix domain sockets (i.e., MS-Windows), or your SSH implementation is
+not able to forward them (e.g., OpenSSH before version 6.7), you can
+forward a TCP port instead.  In this example, assume that the local
+Emacs listens on tcp port 12345.  Assume further that
 @file{/home} is on a shared file system, so that the server file
 @file{~/.emacs.d/server/server} is readable on both hosts.
 
 @example
 local$ ssh -R12345:localhost:12345 remote
-remote$ export EDITOR="emacsclient \
-        --server-file=server \
-        --tramp=/ssh:remote:"
+remote$ export EMACS_SERVER_FILE=server
+remote$ export EMACSCLIENT_TRAMP=/ssh:remote:
+remote$ export EDITOR=emacsclient
 remote$ $EDITOR /tmp/foo.txt #Should open in local emacs.
 @end example
 
-- 
2.44.0


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* bug#66667: [PATCH] Socket forwarding in emacsclient --tramp-prefix example
  2024-04-08 11:26     ` Peter Oliver
@ 2024-04-10  8:48       ` Michael Albinus via Bug reports for GNU Emacs, the Swiss army knife of text editors
  0 siblings, 0 replies; 11+ messages in thread
From: Michael Albinus via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2024-04-10  8:48 UTC (permalink / raw)
  To: Peter Oliver; +Cc: 66667-done

Version: 29.4

Peter Oliver <p.d.oliver@mavit.org.uk> writes:

Hi Peter,

> Here is an update patch that does that.

Thanks, I've pushed this to the emacs-29 branch. Closing the bug (again).

> I’m not sure why this bug was closed already.

You've been quiet for months, so I've assumed you've lost interest.

Best regards, Michael.





^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2024-04-10  8:48 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-10-21 15:01 bug#66667: [PATCH] Socket forwarding in emacsclient --tramp-prefix example Peter Oliver
2023-10-21 16:57 ` Michael Albinus
2023-10-21 19:28   ` Peter Oliver
2023-10-22  7:43     ` Michael Albinus
2023-10-22  9:26       ` Eli Zaretskii
2023-10-22 16:53         ` Peter Oliver
2024-01-10 10:14           ` Michael Albinus via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-10-22  1:05 ` Björn Bidar via Bug reports for GNU Emacs, the Swiss army knife of text editors
     [not found] ` <65347577.5d0a0220.ab2d6.0249SMTPIN_ADDED_BROKEN@mx.google.com>
2023-10-22 17:09   ` Peter Oliver
2024-04-08 11:26     ` Peter Oliver
2024-04-10  8:48       ` Michael Albinus via Bug reports for GNU Emacs, the Swiss army knife of text editors

Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.