4

Google Compute Engine으로 새 서버를 설치했습니다. 사용자 및 공개 키를 Google Cloud 콘솔의 메타 데이터에 추가했습니다 (sshKeys).Google 클라우드 SSH 키

메타 데이터의 공개 키를 바꾸려고 시도했지만 지금은 내 서버에 ssh로 연결할 수있는 유일한 서버 인 것처럼 보입니다 (PuTTY 사용). 새로운 하나는 업데이트 된 것 같지 않습니다.

이제 전체 메타 데이터를 제거하거나 횡설수졸 한 텍스트를 sshKeys 필드에 입력하더라도 여전히 작동합니다!

언젠가 메타 데이터가 서버에 푸시되어야 할 필요가있을 수 있습니까 (이전의 시도는 즉시 발생 했습니까?).

답변

1

sshKeys 메타 데이터에서 키를 제거해도 인스턴스에서 키가 제거되지 않습니다.

아마도 새로운 키가 포맷되지 않은 이유는 새 키의 포맷에 실수가 있었던 것처럼 들립니다. sshKeys 메타 데이터의 각 줄은 "username : ssh-rsa AAAAB3Nza ..... sjr comment"와 같아야합니다. 빈 공간이 없어야합니다.

한 가지 일반적인 실수는 개발자 콘솔에서 sshKeys 메타 데이터를 복사하고 키를 추가 한 다음 붙여 넣으면 개발자 콘솔이 html 출력의 새 줄을 잃어 버리므로 줄 바꿈에주의해야합니다.

+0

가 추가되었지만 단지에 개별 사용자의 authorized_keys에 대신 새로운 사용자를 생성하고 추가하는 파일 그것의 열쇠로서. –

2

Google Compute Engine에서 ssh 키를 관리하는 방법을 이해하려면 GCE가 metadata을 관리하는 방법을 이해해야합니다 (작성한대로 메타 데이터 저장소에 있음).

더 구체적으로는 project and instance metadata의 차이가 중요합니다. 문서를 인용하려면 (이전 링크 참조) :

메타 데이터는 프로젝트 및 인스턴스 수준 모두에서 할당 할 수 있습니다. 프로젝트 레벨 메타 데이터는 프로젝트 내의 모든 가상 머신 인스턴스로 전파되지만 인스턴스 레벨 메타 데이터는 해당 인스턴스에만 영향을 미칩니다. 프로젝트 및 인스턴스 수준 메타 데이터를 모두 설정할 수 있지만 프로젝트 및 인스턴스 메타 데이터에 대해 동일한 키를 설정하면 Compute Engine은 인스턴스 메타 데이터를 사용합니다. 이 오히려 논리적이고 간단 보이지만

, 하나는 사용 된 용어로, 매우 밀접하게, 관심을 지불해야 :

프로젝트 수준의 메타 데이터 프로젝트 [내의 모든 가상 머신 인스턴스에를 전파합니다. ..]

수 있습니다 se 모두 [...]이지만 [...]에 대해 동일한 키를 설정하면 Compute Engine 은 인스턴스 메타 데이터을 사용합니다. 당신은 단지, 그것은 당신의 경우에 전파됩니다 프로젝트 수준 에서 메타 데이터를 설정하면

  1. : 당신이 두 주장을 고려하면

, 그것은 두 가지를 의미한다.

  • 인스턴스의 메타 데이터를 수준으로 설정하면 수준의 프로젝트 수준보다 우선하며 아무 것도 전파되지 않습니다. 그 직접적인 결과로

  • 은 GCE 플랫폼을 제거 할 때 단지 ~user/.ssh/authorized_keys 파일에서 키를 제거하는 동안, 인스턴스에 SSH 키를 제거 (및 배치 할 때 관련 사용자 생성/배치를 돌봐 - ~user에 대한 데이터를 잃지 마십시오. 자신 만의 키를 지정하지 않은 경우 (인스턴스 생성시 또는 이후에). 그렇게 할 경우 GCE 플랫폼은 ssh 키 관리를 수동으로 간주하며 메타 데이터 저장소와 동기화되지 않습니다.

    다행히도 GCE 플랫폼이 잘되어 있으므로 GCE 플랫폼에서 관리하는 키를 얻기 위해 인스턴스를 다시 만들 필요가 없습니다. sshKeys과 관련된 인스턴스 레벨 메타 데이터 만 제거하면됩니다.

    동일한 방법으로 키 sshKeys과 함께 인스턴스 수준 메타 데이터를 추가하면 ssh 키 GCE 플랫폼 관리가 비활성화됩니다. 인스턴스 레벨 메타 데이터를 제거하지 않는 한.

    지연 관련 질문 : 네트워크 지연 이외의 지연이 없었으므로 (플랫폼 실행 지연이 눈에 띄지 않음) 지금까지. 플랫폼이 수시로 지연되는 것은 불가능하다고 생각하지 않지만 문제의 원인이 될 가능성은 매우 낮습니다.


    추가 주 : 모든 유저가 프로젝트 레벨에 존재있는 :

    일부 분포 (예 우분투)는 (~ubuntu 우분투의 경우), 특정 사용자를 포함 ssh 키는 로그인 할 수 있습니다. 해당 사용자의 authorized_keys은 인스턴스 생성시 생성되며 결코 GCE 플랫폼에 의해 다시 변경되지 않는 것처럼 보입니다. IMHO, 자동 ssh 키 관리가 선호됩니다.


    출처 : GCE와 개인적인 경험, terraform, 및 Google 개발자 콘솔 그것은 열쇠처럼 보인다