Allowing xfce4-session to use external ssh-agent

Silvio Knizek killermoehre at gmx.net
Sun Nov 19 19:23:04 CET 2017


Am Sonntag, den 19.11.2017, 02:51 +0200 schrieb Ivan Kabaivanov:
> Hi,
> 
> 
> 
> I've been using xfce for almost two years after having used kde for
> 19.  I love xfce and I would like to thank each and every developer
> who has worked and is working on it.
> 
> 
> 
> I would like to request a feature and I am submitting a patch for
> your consideration.
> 
> 
> 
> I very often work on my machines remotely and start ssh-agent via a
> set of commands in .bashrc,  so I always have a running ssh-agent,
> even before starting xfce.  I would like to xfce to use the already
> running ssh-agent.
> 
> 
> 
> Here's a very crude patch that I've tested and have confirmed as
> working.  I'm sure I am forgetting some cases.  But I would like your
> critique and input on the feasibility of this patch making it into
> xfce.
> 
> 
> 
> 
> --- xfce4-session-4.13.0.original/xfce4-session/xfsm-startup.c  2014-
> 09-28 17:51:01.000000000 +0300
> +++ xfce4-session-4.13.0/xfce4-session/xfsm-startup.c   2017-11-19
> 02:15:05.108424383 +0200
> @@ -199,6 +199,7 @@
>  {
>    gchar       *ssh_agent;
>    gchar       *ssh_agent_path = NULL;
> +  gchar       *ssh_agent_socket = NULL;
>    gchar       *gpg_agent_path = NULL;
>    gchar       *cmd;
>    pid_t        agentpid;
> @@ -256,6 +257,14 @@
>          }
>        g_free (ssh_agent);
>      }
> +  else
> +    {
> +      if (xfconf_channel_get_bool (channel, "/startup/ssh-
> agent/external", TRUE))
> +        {
> +          ssh_agent_socket = xfconf_channel_get_string (channel,
> "/startup/ssh-agent/external_socket", NULL);
> +          g_setenv ("SSH_AUTH_SOCK", ssh_agent_socket, TRUE);
> +        }
> +    }
> 
>    if (G_LIKELY (ssh_agent_path != NULL || gpgagent_ssh_enabled))
>      {
> 
> 
> 
> In order to use an external ssh-agent, you need to set two new
> properties:
> 
> 
> 
> xfconf-query -c xfce4-session -p /startup/ssh-agent/external -n -t
> string -s true
> 
> xfconf-query -c xfce4-session -p /startup/ssh-agent/external_socket
> -n -t string -s PATH_TO_SSH_SOCKET
> 
> 
>  I start ssh-agent like so:
>  ssh-agent -a PATH_TO_SSH_SOCKET so the socket location never
> changes.
>   I would appreciate your feedback.
>  Thanks,
> IvanK.
> _______________________________________________
> Xfce4-dev mailing list
> Xfce4-dev at xfce.org
> https://mail.xfce.org/mailman/listinfo/xfce4-dev

Hi,

I think the easiest solution would be to "hardcode" the SSH_AUTH_SOCK
variable as deterministic string (a.k.a. wihtout random tmp-path and
without PID) into ~/.pam_environment (read by pam_env.so), which set
this variable for every application in your PAM session. Than you would
start ssh-agent as »ssh-agent -a "$SSH_AUTH_SOCK"«. You would tell Xfce
to just not start the ssh-agent.

HTH


More information about the Xfce4-dev mailing list