GCP – sudo는 GoogleCloudShell에서 작동하지만 VM에 ssh를 사용하는 경우에는 작동하지 않습니다. ssh를 사용한다. ssh user123@1.2.3.4 1.2.3.4는

나는 새로운 Google Compute Engine VM (Debian 9)을 만들고 GoogleCloud 쉘을 사용하여 쉘을 열었습니다. 제가 할수 있어요 sudo 해당 브라우저 쉘 창에서.

그런 다음 VM에 ssh-keys와 ssh를 설치합니다. 토론을 위해서 내 사용자 이름은 “user123″입니다. 나는 GCP VM에 ssh를 사용한다.

ssh user123@1.2.3.4

1.2.3.4는 내 GCP 외부 IP 주소입니다. 나는 그 다음에 로그인했다.

그래서 사용자 user123 …에서 GoogleCloudShell sudo 작동하지만,을 통해 로그인 한 경우 SSH 같이 user123, 암호를 묻는 메시지가 나타납니다.

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

    #1) Respect the privacy of others.
    #2) Think before you type.
    #3) With great power comes great responsibility.

[sudo] password for user123:

당연히, 나는 암호를 설정하고 싶지 않거나 필요가 없다. 이것을 허용하기 위해 sudo를 얻을 필요가있다. user123 sudo 할 사용자 계정. 하지만 GoogleCloudShell에 로그인 할 때 작동합니다. 흠 … 추적하겠습니다.하지만 그건 내 질문입니다.

참고 : 내 루트에 있기 때문에 GoogleCloudShell (sudo를 통해), 내가해야 할 일을 찾아서 고칠 수 있어야한다.

ssh를 통해 로그인 할 때 sudo가 작동하도록하기 위해 취해야 할 다음 단계는 무엇입니까?



답변

나는 2 개의 답을 줄거야.

첫째, 클라우드 셸이 백그라운드에서 인스턴스 메타 데이터를 관리하고 프로젝트에 추가 된 모든 사용자에 대해 암호없이 sudo를 허용합니다. Google을 사용하여 사용자 설정

https://cloud.google.com/compute/docs/instances/adding-removing-ssh-keys
https://cloud.google.com/compute/docs/instances/managing-instance-access

프로젝트 콘솔을 통해 원하는 사용자 계정을 추가하십시오. 그러면 해당 사용자가 프로젝트의 모든 호스트로 전파됩니다.

둘째, 원하는 것은 암호가없는 sudo를 설정하는 것입니다. visudo를 사용하여 / etc / sudoers를 편집하거나 /etc/sudoers.d 아래에 새 파일을 만들고 다음과 같은 줄을 추가 할 수 있습니다.

user123       ALL = (ALL) NOPASSWD: ALL

당신은 구글이 google-sudoers 그룹의 그룹 멤버쉽에 의해 그것을하고 있음을 볼 수있다.

timmy@instance-1:~$ sudo cat /etc/sudoers.d/google_sudoers
%google-sudoers ALL=(ALL:ALL) NOPASSWD:ALL
timmy@instance-1:~$ id
uid=1000(timmy) gid=1001(timmy) groups=1001(timmy),4(adm),30(dip),44(video),46(plugdev),1000(google-sudoers)


답변

GCP 컴퓨팅 엔진을 만든 후에는 sudo가 ssh에서 작동하도록 특별한 조치를 취할 필요가 없습니다. 분명히 GCP 콘솔을 사용하고 자신의 게시물에 @TimmyBrowne 멘션으로 키를 추가해야합니다. 만나다 https://cloud.google.com/compute/docs/instances/adding-removing-ssh-keys .

ssh 공개 키가 GCP Compute Engine 인스턴스에 입력되면 인스턴스로 ssh 할 수 있습니다. 하지만 올바른 사용자 이름을 사용해야합니다.

예를 들어 내 GCP 사용자 이름이 fredsmith이고 내 GCP 외부 IP가 5.6.7.8 인 경우 ssh 명령은 다음과 같습니다.

ssh fredsmith@5.6.7.8

그리고 분명히 개인 ssh 키는 인스턴스에 대한 ssh 메타 데이터에 넣은 공개 키와 일치해야합니다.

로그인 한 후에는 sudo를 실행할 수 있습니다. GCP가 자격 증명 (fredsmith)을 사용하여이 인스턴스를 이미 설정하고 sudo가 GCP 용 google-sudoers로 보이도록 필요한 그룹에 (fredsmith) 넣었 ​​기 때문에 작동합니다.

다른 사용자를 생성하고 해당 사용자가 sudo 권한을 갖도록 허용하려면 @TimmyBrowne 응답을 참조하십시오.

나는 여전히 내가 일관성없는 결과를 얻는 이유가 무엇인지에 대해 긍정적이지 못하다. 때때로 나의 authorized_keys 파일이 제거 되었기 때문에 때로는 sudo와 다른 시간을 할 수 없었지만, 나는 이것을 더 이상 추구 할 충분한 정보가 없다.

Timmy Browne이 이해 한대로 내 질문에 답한 이후 정확하다고 판단됩니다. 나는 그에게이 대답에 대한 크레딧을 줄 예정이지만, 다른 사람들이이 같은 행동을 보게되면이 대답을 upvote 할 수 있기를 바란다. 그래서 우리는 그것을 추적 할 수 있기를 바란다.


답변