[RFC][PATCH] sftp transport whithout sftp subsystem configured

Martin Pool mbp at sourcefrog.net
Mon Mar 6 23:12:49 GMT 2006


On  6 Mar 2006, Goffredo Baroncelli <kreijack at alice.it> wrote:
> Hi all,
> 
> on the server that hosts my projects, the sftp subsystem isn't 
> configured on the sshd server. It still possible to do sftp but it is 
> needed to pass the explicit path of the sftp-server to the sftp client.

It sounds reasonable to me.  Perhaps it'd be better in a configuration
file?

> $ sftp XXXXXX at goffredo-baroncelli.homelinux.net
> Connecting to goffredo-baroncelli.homelinux.net...
> Enter passphrase for key 'YYYYYYYYY/id_dsa':
> Request for subsystem 'sftp' failed on channel 0
> Couldn't read packet: Connection reset by peer
> ghigo at venice:~$ sftp -s /usr/libexec/openssh/sftp-server XXXXXX at goffredo-baroncelli.homelinux.net
> Connecting to goffredo-baroncelli.homelinux.net...
> Enter passphrase for key 'YYYYYYYY/id_dsa':
> sftp> ls
> bzr                                     goffredo.baroncelli.homelinux.net
> [...]
> 
> The same problem exists with bazaar; the aim of the patch below is to provide
> to the client an explicit path of the sftp-server which will be passed to the 
> server.
> The code below checks if the environment variable BZR_OVERRIDE_SFTP_SUBSYSTEM is 
> defined: if yes, passes its value (the sftp-server path) to the client.
> 
> $ BZR_OVERRIDE_SFTP_SUBSYSTEM=/usr/libexec/openssh/sftp-server \
>   bzr.dev/bzr branch sftp://XXXXX@goffredo-baroncelli.homelinux.net//YYYYYY/bzr/hgweb_devel
> Enter passphrase for key '/YYYYYYYYYY/id_dsa':
> [===                                                       ] copy  2/30
> 
> 
> I know that this is an hack, but I don't know how otherwise I can solve my 
> problem ( I can't change the sshd server configuration )....
> 
> Comments are welcome
> 
> $ bzr diff
> === modified file 'a/bzrlib/transport/sftp.py'
> --- a/bzrlib/transport/sftp.py
> +++ b/bzrlib/transport/sftp.py
> @@ -124,7 +124,10 @@
>                  args.extend(['-p', str(port)])
>              if user is not None:
>                  args.extend(['-l', user])
> -            args.extend(['-s', hostname, 'sftp'])
> +            if 'BZR_OVERRIDE_SFTP_SUBSYSTEM' in os.environ:
> +                    args.extend([hostname, os.environ['BZR_OVERRIDE_SFTP_SUBSYSTEM']])
> +            else:
> +                    args.extend(['-s', hostname, 'sftp'])
>          elif vendor == 'ssh':
>              args = ['ssh', '-x']
>              if port is not None:
> 
> 
> 
> Goffredo
> 
> -- 
> gpg key@ keyserver.linux.it: Goffredo Baroncelli (ghigo) <kreijack at inwind_DOT_it>
> Key fingerprint = CE3C 7E01 6782 30A3 5B87  87C0 BB86 505C 6B2A CFF9


-- 
Martin




More information about the bazaar mailing list