scp remote path specification
Markus Friedl
Markus.Friedl at informatik.uni-erlangen.de
Tue Dec 19 02:41:43 EST 2000
you cannot assume that the path for the remote scp is the
same as for the local scp. it's better to add an option
to scp, e.g.:
$ scp -X /remote/path/to/scp /etc/passwd otherhost:/etc
-m
On Mon, Dec 18, 2000 at 03:48:45PM +0100, Jan IVEN wrote:
> Hello,
>
> in order to use "scp", the scp binary has to be in the compile-time
> default path on the remote host. For some users (like root), we try to
> avoid this since scp may be on a network file system (AFS/NFS), and we
> don't want to hang root's session on network outages.
>
> Would a patch to scp be acceptable in the main tree that allows to set
> the path to remote scp explicity, either as a new command line or as
> an ENV variable (it looks like a ssh config file parameter won't work,
> since the file is not read by scp itself).
>
> I know that a workaround is to put "PATH=/path/to/bla" into these user's
> .ssh/environment or as a parameter to their key, but I don't want this
> PATH to be taken for interactive use.
>
> Please advise.
>
> Best regards
> Jan Iven
>
> PS: a small patch so that /full/path/to/scp will find the
> corresponding local /full/path/to/ssh is appended below.
>
> --- openssh/scp.c~ Sat Oct 28 05:19:58 2000
> +++ openssh/scp.c Tue Nov 7 17:59:37 2000
> @@ -245,7 +245,7 @@
> char *argv[];
> {
> int ch, fflag, tflag;
> - char *targ;
> + char *targ, *pathsep;
> extern char *optarg;
> extern int optind;
>
> @@ -253,6 +253,19 @@
> addargs("ssh"); /* overwritten with ssh_program */
> addargs("-x");
> addargs("-oFallBackToRsh no");
> +
> + /* check explicit path for ssh binary, default is SSH_PROGRAM */
> + if ((argc > 0) &&
> + (argv[0] != NULL)) {
> + pathsep = strrchr(argv[0], '/');
> + if (pathsep != NULL) {
> + pathsep++;
> + *pathsep = 0;
> + ssh_program = xmalloc(strlen(argv[0]) + 4); /* "../path" + "ssh\0" */
> + strcpy(ssh_program, argv[0]);
> + strcat(ssh_program, "ssh");
> + }
> + }
>
> fflag = tflag = 0;
> while ((ch = getopt(argc, argv, "dfprtvBCc:i:P:q46S:o:")) != EOF)
>
>
More information about the openssh-unix-dev
mailing list