upstream: make scp -3 the default for remote-to-remote copies. It

provides a much better and more intuitive user experience and doesn't require
exposing credentials to the source host.

thanks naddy@ for catching the missing argument in usage()

"Yes please!" - markus@
"makes a lot of sense" - deraadt@
"the right thing to do" - dtucker@

OpenBSD-Commit-ID: d0d2af5f0965c5192ba5b2fa461c9f9b130e5dd9
This commit is contained in:
djm@openbsd.org 2021-08-09 23:56:36 +00:00 committed by Damien Miller
parent 2f7a3b51ce
commit bfdd4b722f
2 changed files with 22 additions and 9 deletions

20
scp.1
View File

@ -8,9 +8,9 @@
.\"
.\" Created: Sun May 7 00:14:37 1995 ylo
.\"
.\" $OpenBSD: scp.1,v 1.97 2021/08/02 23:38:27 djm Exp $
.\" $OpenBSD: scp.1,v 1.98 2021/08/09 23:56:36 djm Exp $
.\"
.Dd $Mdocdate: August 2 2021 $
.Dd $Mdocdate: August 9 2021 $
.Dt SCP 1
.Os
.Sh NAME
@ -18,7 +18,7 @@
.Nd OpenSSH secure file copy
.Sh SYNOPSIS
.Nm scp
.Op Fl 346ABCpqrTv
.Op Fl 346ABCpqRrTv
.Op Fl c Ar cipher
.Op Fl D Ar sftp_server_path
.Op Fl F Ar ssh_config
@ -80,10 +80,11 @@ The options are as follows:
Copies between two remote hosts are transferred through the local host.
Without this option the data is copied directly between the two remote
hosts.
Note that this option disables the progress meter and selects batch mode
for the second host, since
Note that, when using the legacy SCP protocol (the default), this option
selects batch mode for the second host as
.Nm
cannot ask for passwords or passphrases for both hosts.
This mode is the default.
.It Fl 4
Forces
.Nm
@ -239,6 +240,15 @@ original file.
Quiet mode: disables the progress meter as well as warning and diagnostic
messages from
.Xr ssh 1 .
.It Fl R
Copies between two remote hosts are performed by connecting to the origin
host and executing
.Nm
there.
This requires that
.Nm
running on the origin host can authenticate to the destination host without
requiring a password.
.It Fl r
Recursively copy entire directories.
Note that

11
scp.c
View File

@ -1,4 +1,4 @@
/* $OpenBSD: scp.c,v 1.228 2021/08/09 23:49:31 djm Exp $ */
/* $OpenBSD: scp.c,v 1.229 2021/08/09 23:56:36 djm Exp $ */
/*
* scp - secure remote copy. This is basically patched BSD rcp which
* uses ssh to do the data transfer (instead of using rcmd).
@ -165,7 +165,7 @@ int showprogress = 1;
* This is set to non-zero if remote-remote copy should be piped
* through this process.
*/
int throughlocal = 0;
int throughlocal = 1;
/* Non-standard port to use for the ssh connection or -1. */
int sshport = -1;
@ -482,7 +482,7 @@ main(int argc, char **argv)
fflag = Tflag = tflag = 0;
while ((ch = getopt(argc, argv,
"12346ABCTdfpqrtvD:F:J:M:P:S:c:i:l:o:")) != -1) {
"12346ABCTdfpqRrtvD:F:J:M:P:S:c:i:l:o:")) != -1) {
switch (ch) {
/* User-visible flags. */
case '1':
@ -504,6 +504,9 @@ main(int argc, char **argv)
case '3':
throughlocal = 1;
break;
case 'R':
throughlocal = 0;
break;
case 'o':
case 'c':
case 'i':
@ -1984,7 +1987,7 @@ void
usage(void)
{
(void) fprintf(stderr,
"usage: scp [-346ABCpqrTv] [-c cipher] [-D sftp_server_path] [-F ssh_config]\n"
"usage: scp [-346ABCpqRrTv] [-c cipher] [-D sftp_server_path] [-F ssh_config]\n"
" [-i identity_file] [-J destination] [-l limit] [-M scp|sftp]\n"
" [-o ssh_option] [-P port] [-S program] source ... target\n");
exit(1);