web-dev-qa-db-fra.com

PuTTY PSCP erreur "Copie locale à locale non prise en charge" lorsque le nom d'utilisateur contient une barre oblique

J'essaie de déplacer un fichier de ma machine Windows locale vers un serveur Linux distant à l'aide de PSCP. Je suis connecté au VPN pour pouvoir accéder à ma machine Linux distante avec mon nom d'utilisateur et mon mot de passe.

Ma commande PSCP pour le transfert est:

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

Ce résultat dans l'erreur

Copie locale à locale non prise en charge


J'ai essayé cette commande juste pour un essai

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

La commande ci-dessus a eu pour résultat de me demander le mot de passe. Cependant, lorsque je tape le mot de passe, l'accès est refusé. En effet, le nom d'utilisateur de mon ordinateur Linux distant est PEM/username et non pas username. Toutefois, si j’utilise PEM/username, le message "Copie locale à locale non prise en charge" le message d’erreur est imminent. Cela a-t-il quelque chose à voir avec la barre oblique \ dans le nom d'utilisateur PEM\username

6
j1897

Oui, c'est la barre oblique inverse.

Pour résoudre ce problème, utilisez un commutateur -l pour spécifier le nom d'utilisateur.

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

Contexte:

Le PSCP recherche les deux points, barres obliques ou barres obliques inverses de la cible. Ce n'est que si le premier symbole est deux points que la cible est considérée comme distante, sinon locale.

/*
 *  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

je pense qu'il vous manque une apostrophe après le chemin du fichier Windows:

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