我正在尝试使用以下命令将目录从虚拟机复制到本地计算机的桌面:
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.
答案 0 :(得分:5)
尝试从尝试运行gcloud命令的计算机上运行“ gcloud auth登录”。
有关更多信息have a look at this old post,他们正在报告同一问题。
答案 1 :(得分:2)
您将需要roles/compute.instanceAdmin.v1
才能将SSH或SCP用于实例中要使用的凭据。最简单的方法是将Compute Instance Admin
添加到您的凭据中。
要查看您使用的凭据,请执行gcloud auth list
。该帐户的左列将带有星号。
要弄清您拥有什么权限,请执行gcloud projects get-iam-policy PROJECT_ID
答案 2 :(得分:0)
提供完整的代码以更好地理解
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());
}