问题
I am trying to move a file from my local Windows machine to a remote Linux server using PSCP. I am connected to the VPN so that I can access my remote Linux machine with my username and password.
My PSCP command for transfer is:
pscp C:\Users\username\Desktop\list.txt PEM\username@10.120.43.78:/home/local/PEM/username
This result in the error
Local to local copy not supported
I have tried this command just for a trial
pscp C:\Users\username\Desktop\list.txt username@10.120.43.78:/home/local/PEM/username
The above command resulted in asking me the password. However, when I type in the password, the access is denied. This is because my remote Linux machine username is PEM/username
and not username
. However if I use PEM/username
the "Local to local copy not supported" error message is coming. Does it have something to do with the slash \
in the username PEM\username
?
回答1:
Yes, it's the backslash.
To workaround it, use an -l
switch to specify the username.
pscp -l PEM\username C:\Users\username\Desktop\list.txt 10.120.43.78:/home/local/PEM/username
Background:
The PSCP looks for the first colon, slash or backslash in the target. Only if the first symbol is colon, it considers the target as remote, otherwise as local.
/*
* Find a colon in str and return a pointer to the colon.
* This is used to separate hostname from filename.
*/
static char *colon(char *str)
{
/* We ignore a leading colon, since the hostname cannot be
empty. We also ignore a colon as second character because
of filenames like f:myfile.txt. */
if (str[0] == '\0' || str[0] == ':' ||
(str[0] != '[' && str[1] == ':'))
return (NULL);
str += host_strcspn(str, ":/\\");
if (*str == ':')
return (str);
else
return (NULL);
}
...
if (colon(argv[argc - 1]) != NULL)
toremote(argc, argv);
else
tolocal(argc, argv);
回答2:
i think you are missing apostrophe after Windows file path:
pscp "C:\Users\username\Desktop\list.txt" PEM\username@10.120.43.78:/home/local/PEM/username
来源:https://stackoverflow.com/questions/34037484/putty-pscp-error-local-to-local-copy-not-supported-when-username-contains-a-sl