[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