web-dev-qa-db-ja.com

--recurseエラー:権限が不十分です:リクエストの認証スコープが不十分でした

次のコマンドを使用して、vmからローカルマシンのデスクトップにディレクトリをコピーしようとしています。

gcloud compute scp --recurse instance-1:~/directory ~/Desktop/

「gcloud auth login」で再認証を試みましたが、まだ表示されます

ERROR: (gcloud.compute.scp) Could not fetch resource:
 - Insufficient Permission: Request had insufficient authentication scopes.
8
Wesley Cenatus

Gcloudコマンドを実行しようとしているマシンから「gcloud auth login」を実行してみてください。

詳細については この古い投稿をご覧ください 、彼らは同じ問題を報告しています。

16
Eduardo Ruela

使用している認証情報のインスタンスにSSHまたはSCPを使用するには、roles/compute.instanceAdmin.v1が必要です。最も簡単な方法は、Compute Instance Adminを認証情報に追加することです。

使用している認証情報を確認するには、gcloud auth listを実行します。アカウントの左側の列にアスタリスクが表示されます。

実行している権限を把握するには、gcloud projects get-iam-policy PROJECT_IDを実行します

3
John Hanley

理解を深めるためにコード全体を提供する

private static void upload() throws GeneralSecurityException, IOException {
    final NetHttpTransport HTTP_TRANSPORT = GoogleNetHttpTransport.newTrustedTransport();
    Drive driveService = new Drive.Builder(HTTP_TRANSPORT, JSON_FACTORY, getCredentials(HTTP_TRANSPORT))
            .setApplicationName(APPLICATION_NAME)
            .build();
    File fileMetadata = new File();

    fileMetadata.setName("My Report");
    fileMetadata.setMimeType("application/vnd.google-apps.spreadsheet");

    Java.io.File filePath = new Java.io.File("/exportData.csv");
    FileContent mediaContent = new FileContent("text/csv", filePath);
    File file = driveService.files().create(fileMetadata, mediaContent)
            .setFields("id")
            .execute();
    System.out.println("File ID: " + file.getId());
}
0
harshal bhavsar