git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] GIT_SSH alternate ssh name or helper
@ 2005-08-03 15:15 Martin Sivak
  2005-08-03 17:12 ` Junio C Hamano
  0 siblings, 1 reply; 4+ messages in thread
From: Martin Sivak @ 2005-08-03 15:15 UTC (permalink / raw)
  To: git

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

This patch make possible to use alternate ssh binary or ssh helper
script. The script can be used to give additional parameters to ssh
binary (like private key, protocol version, ...).

Example script could look like this:

#!/bin/sh
ssh -1 -i myprivatekey.key "$@"

The patch itself is realy very simple:

diff -uNr git-current/connect.c git-current-mars@nomi.cz/connect.c
--- git-current/connect.c  2005-08-03 15:00:04.000000000 +0200
+++ git-current-mars@nomi.cz/connect.c 2005-08-03 16:32:36.000000000 +0200
@@ -166,6 +166,9 @@
   int pipefd[2][2];
   pid_t pid;
   enum protocol protocol;
+  char *sshprog;
+
+  sshprog = getenv("GIT_SSH") ? : "ssh";

   host = NULL;
   path = url;
@@ -205,7 +208,7 @@
      close(pipefd[1][0]);
      close(pipefd[1][1]);
      if (protocol == PROTO_SSH)
-        execlp("ssh", "ssh", host, command, NULL);
+        execlp(sshprog, "ssh", host, command, NULL);
      else
         execlp("sh", "sh", "-c", command, NULL);
      die("exec failed");
diff -uNr git-current/rsh.c git-current-mars@nomi.cz/rsh.c
--- git-current/rsh.c   2005-08-03 15:00:04.000000000 +0200
+++ git-current-mars@nomi.cz/rsh.c  2005-08-03 16:26:39.000000000 +0200
@@ -17,6 +17,7 @@
   char command[COMMAND_SIZE];
   char *posn;
   int i;
+  char *prog; 

   if (!strcmp(url, "-")) {
      *fd_in = 0;
@@ -24,6 +25,8 @@
      return 0;
   }

+  prog = getenv("GIT_SSH") ? : "ssh";
+  
   host = strstr(url, "//");
   if (host) {
      host += 2;
@@ -59,7 +62,7 @@
      close(sv[1]);
      dup2(sv[0], 0);
      dup2(sv[0], 1);
-     execlp("ssh", "ssh", host, command, NULL);
+     execlp(prog, "ssh", host, command, NULL);
   }
   close(sv[0]);
   *fd_in = sv[1];


Signed-off-by: Martin Sivak <mars@nomi.cz>

-- 
Martin Sivak
mars@nomi.cz


[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

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

* Re: [PATCH] GIT_SSH alternate ssh name or helper
  2005-08-03 15:15 [PATCH] GIT_SSH alternate ssh name or helper Martin Sivak
@ 2005-08-03 17:12 ` Junio C Hamano
  2005-08-03 18:56   ` Martin Sivak
  0 siblings, 1 reply; 4+ messages in thread
From: Junio C Hamano @ 2005-08-03 17:12 UTC (permalink / raw)
  To: Martin Sivak; +Cc: git

Martin Sivak <mars@nomi.cz> writes:

> This patch make possible to use alternate ssh binary or ssh helper
> script. The script can be used to give additional parameters to ssh
> binary (like private key, protocol version, ...).
>
> Example script could look like this:
>
> #!/bin/sh
> ssh -1 -i myprivatekey.key "$@"
>
> The patch itself is realy very simple:

I understand why you would want this if your ssh binary is
called something other than ssh [*1*], but I doubt the example
you gave needs this patch.  Could you explain why having
something like this in your .ssh/config file is not enough?

    Host foo.bar.xz
      Protocol 1
      IdentityFile ~/.ssh/privatekey.key

Even if you wish to use different settings between git and
interactive, I presume you could do something like this:

    # for interactive
    Host foo.bar.xz
      Protocol 2

    # real repo is foo.bar.xz:/pub/scm/git/git.git/ but pull with
    # git-foo.bar.xz:/pub/scm/git/git.git/
    Host git-foo.bar.xz
      Hostname foo.bar.xz
      Protocol 1
      IdentityFile ~/.ssh/privatekey.key


[Footnote]
*1* and even in that case you can trivially fix it by having
a small wrapper in $HOME/bin/ssh:

    #!/bin/sh
    exec ssh-installed-under-nonstandard-name "$@"

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

* Re: [PATCH] GIT_SSH alternate ssh name or helper
  2005-08-03 17:12 ` Junio C Hamano
@ 2005-08-03 18:56   ` Martin Sivak
  2005-08-03 19:29     ` Junio C Hamano
  0 siblings, 1 reply; 4+ messages in thread
From: Martin Sivak @ 2005-08-03 18:56 UTC (permalink / raw)
  To: git

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

> I understand why you would want this if your ssh binary is
> called something other than ssh [*1*], but I doubt the example
> you gave needs this patch.  Could you explain why having
> something like this in your .ssh/config file is not enough?
> 
>     Host foo.bar.xz
>       Protocol 1
>       IdentityFile ~/.ssh/privatekey.key

The example was of course about the simpliest thing i thought of.

I would find that variable (GIT_SSH) usefull, and actually it does no
harm, because you already have GIT_SSH_PULL & PUSH variables, for the
same purpose (to define different name).

Actually I think there is at least one case, when helper script is useful.
I mean, how would you setup different identities for more user accounts on the
same server (it doesn't happen often, but..)?

Best regards
--
Martin Sivak
mars@nomi.cz


[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

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

* Re: [PATCH] GIT_SSH alternate ssh name or helper
  2005-08-03 18:56   ` Martin Sivak
@ 2005-08-03 19:29     ` Junio C Hamano
  0 siblings, 0 replies; 4+ messages in thread
From: Junio C Hamano @ 2005-08-03 19:29 UTC (permalink / raw)
  To: Martin Sivak; +Cc: git

Martin Sivak <mars@nomi.cz> writes:

> I mean, how would you setup different identities for more user
> accounts on the same server (it doesn't happen often, but..)?

I do not claim the way I do is the best way, but I do that all
the time.

I just use different "name" to connect, by setting up the ssh
client configuration file to give me the protocol parameters I
want depending on the name I use.  The wildcard support handles
permutations quite nicely.  Something like this:

    $ cat .ssh/config
    Host *-1-*
      Protocol 1
    Host *-2-*
      Protocol 2
    Host lucia-*
      Hostname lucia.example.xz
    Host myriam-*
      Hostname myriam.example.xz
    Host *-junio
      IdentityFile ~/.ssh/identity-junio
      IdentityFile ~/.ssh/id_dsa-junio
    Host *-junkio
      IdentityFile ~/.ssh/identity-junkio
      IdentityFile ~/.ssh/id_dsa-junkio

    $ ssh lucia-2-junio ;# go to lucia over protocol 2, use id_dsa-junio
    $ ssh myriam-1-junkio ;# to myriam over protocol 1, use identity-junkio

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

end of thread, other threads:[~2005-08-03 19:30 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-08-03 15:15 [PATCH] GIT_SSH alternate ssh name or helper Martin Sivak
2005-08-03 17:12 ` Junio C Hamano
2005-08-03 18:56   ` Martin Sivak
2005-08-03 19:29     ` Junio C Hamano

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).