web-dev-qa-db-ja.com

ユーザー名にスラッシュが含まれている場合、PuTTY PSCPエラー「ローカルからローカルへのコピーはサポートされていません」

PSCPを使用して、ローカルのWindowsマシンからリモートのLinuxサーバーにファイルを移動しようとしています。ユーザー名とパスワードを使用してリモートLinuxマシンにアクセスできるように、VPNに接続しています。

転送用のPSCPコマンドは次のとおりです。

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

これはエラーになります

ローカルからローカルへのコピーはサポートされていません


私は試用のためだけにこのコマンドを試しました

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

上記のコマンドを実行すると、パスワードを要求されました。しかし、パスワードを入力すると、アクセスが拒否されます。これは、リモートLinuxマシンのユーザー名がusernameではなくPEM/usernameであるためです。ただし、PEM/usernameを使用すると、"ローカルからローカルへのコピーはサポートされません"エラーメッセージが表示されます。ユーザー名\のスラッシュPEM\usernameと関係がありますか?

9
j1897

はい、それはバックスラッシュです。

これを回避するには、-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);
13
Martin Prikryl

私はあなたがWindowsファイルパスの後にアポストロフィがないと思います:

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