it-swarm.com.de

PuTTY PSCP-Fehler "Local to Local Copy nicht unterstützt", wenn der Benutzername einen Schrägstrich enthält

Ich versuche, eine Datei von meinem lokalen Windows-Computer mithilfe von PSCP auf einen Linux-Remoteserver zu verschieben. Ich bin mit dem VPN verbunden, sodass ich mit meinem Benutzernamen und Kennwort auf meine entfernte Linux-Maschine zugreifen kann.

Mein PSCP-Befehl für die Übertragung lautet:

pscp C:\Users\username\Desktop\list.txt PEM\[email protected]:/home/local/PEM/username

Dies führt zu dem Fehler

Lokale zu lokale Kopie wird nicht unterstützt


Ich habe diesen Befehl nur für einen Versuch ausprobiert

pscp C:\Users\username\Desktop\list.txt [email protected]:/home/local/PEM/username

Der obige Befehl führte dazu, mich nach dem Passwort zu fragen. Wenn ich jedoch das Kennwort eingebe, wird der Zugriff verweigert. Dies liegt daran, dass mein Benutzername für die Linux-Remotemaschine PEM/username und nicht username lautet. Wenn ich jedoch PEM/username verwende, kommt die "Local to Local Copy nicht unterstützt" Fehlermeldung. Hat es etwas mit dem Schrägstrich \ im Benutzernamen PEM\username zu tun? 

6
j1897

Ja, es ist der Backslash.

Um dies zu umgehen, verwenden Sie einen -l-Schalter, um den Benutzernamen anzugeben.

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

Hintergrund:

Der PSCP sucht nach dem ersten Doppelpunkt, Schrägstrich oder Backslash im Ziel. Nur wenn das erste Symbol ein Doppelpunkt ist, wird das Ziel als fern, sonst als lokal betrachtet.

/*
 *  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);
11
Martin Prikryl

ich denke, Sie vermissen Apostroph nach Windows-Dateipfad:

pscp "C:\Users\username\Desktop\list.txt" PEM\[email protected]:/home/local/PEM/username
0
anjalis