13

我正在尝试使用 PSCP 将文件从本地 Windows 机器移动到远程 Linux 服务器。我已连接到 VPN,因此我可以使用我的用户名和密码访问我的远程 Linux 机器。

我的 PSCP 传输命令是:

pscp C:\Users\username\Desktop\list.txt PEM\username@10.120.43.78:/home/local/PEM/username

这导致错误

不支持本地到本地副本


我试过这个命令只是为了试用

pscp C:\Users\username\Desktop\list.txt username@10.120.43.78:/home/local/PEM/username

上面的命令导致我询问密码。但是,当我输入密码时,访问被拒绝。这是因为我的远程 Linux 机器用户名是PEM/username而不是username. 但是,如果我使用PEM/username不支持本地到本地复制”的错误消息。它与\用户名中的斜杠有关PEM\username吗?

4

3 回答 3

19

是的,它是反斜杠。

要解决此问题,请使用-l开关指定用户名。

pscp -l PEM\username C:\Users\username\Desktop\list.txt 10.120.43.78:/home/local/PEM/username

背景:

PSCP 在目标中查找第一个冒号、斜杠或反斜杠。只有当第一个符号是冒号时,它才会将目标视为远程,否则视为本地。

/*
 *  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);
于 2015-12-02T08:50:48.127 回答
0

另一种方法是在您键入 root @您的 ip 时尝试在文件路径的末尾之间留出空格。

我有同样的错误

错误的方法

正确的方式

于 2021-11-04T02:26:06.123 回答
-1

我认为您在 Windows 文件路径后缺少引号:

pscp "C:\Users\username\Desktop\list.txt" PEM\username@10.120.43.78:/home/local/PEM/username
于 2015-12-02T08:04:31.400 回答