우리는 Google Cloud Platform에서 소수의 Debian 서버를 운영하고 있습니다. 우리가 설정한 새 서버에서는 생성 시 SSH 키를 추가하고 아무런 문제 없이 SSH를 통해 시스템에 액세스할 수 있었습니다. 지난 1~3개월 이내에 생성된 오래된 머신에 SSH를 통해 액세스하는 데 문제가 있습니다.
테스트 사례로 로컬 Mac을 사용하여 새로운 id_rsa 키 쌍을 만들고 ssh-keygen
공개 키를 GCP에 추가했습니다. 내 IP는 상자에 액세스할 수 있고 내 사용자는 AllowUsers
ssh_config에 있습니다.
$ ssh -i ~/.ssh/*KEY* *USER*@*IP* -p *PORT* -v
OpenSSH_6.9p1, LibreSSL 2.1.8
debug1: Reading configuration data /Users/me/.ssh/config
debug1: /Users/me/.ssh/config line ****: Applying options for ****IP****
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line ****: Applying options for *
debug1: /etc/ssh/ssh_config line ****: Applying options for *
debug1: Connecting to ****IP**** [****IP****] port ****PORT****.
debug1: Connection established.
debug1: identity file /Users/me/.ssh/gcp type 1
debug1: key_load_public: No such file or directory
debug1: identity file /Users/me/.ssh/gcp-cert type -1
debug1: identity file /Users/me/.ssh/gcp type 1
debug1: key_load_public: No such file or directory
debug1: identity file /Users/me/.ssh/gcp-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.9
debug1: Remote protocol version 2.0, remote software version OpenSSH_6.7p1
debug1: match: OpenSSH_6.7p1 pat OpenSSH* compat 0x04000000
debug1: Authenticating to ****IP****:****PORT**** as '****USERNAME****'
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client [email protected] <implicit> none
debug1: kex: client->server [email protected] <implicit> none
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server host key: xxx
debug1: Host '[****IP****]:****PORT****' is known and matches the ECDSA host key.
debug1: Found key in /Users/me/.ssh/known_hosts:1
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
********************************************************************
* *
* This system is for the use of authorized users only. Usage of *
* this system may be monitored and recorded by system personnel. *
* *
* Anyone using this system expressly consents to such monitoring *
* and is advised that if such monitoring reveals possible *
* evidence of criminal activity, system personnel may provide the *
* evidence from such monitoring to law enforcement officials. *
* *
********************************************************************
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /Users/me/.ssh/gcp
debug1: Authentications that can continue: publickey
debug1: Offering RSA public key: /Users/me/.ssh/gcp
debug1: Authentications that can continue: publickey
debug1: No more authentication methods to try.
Permission denied (publickey).
내 키를 찾았음에도 불구하고 내 로컬 클라이언트가 연결 후 인증을 시도하지 않는 것 같습니다. 이것이 내 공개 키를 서버에 올바르게 추가하지 않는 GCP의 문제인지, 아니면 내 로컬 컴퓨터가 뭔가 잘못하고 있는 것인지 확실하지 않습니다.
Google은 지난 몇 달 동안 키를 처리하는 방식을 변경한 것 같습니다(메타데이터에서 SSH 키 관리) 하지만 모든 것이 올바른 것 같지만 연결할 수 없습니다.
답변1
조사 결과 Google Cloud Platform에서 Debian 시스템에 SSH 키를 적용하는 데 문제가 있는 것으로 나타났습니다. 프로젝트 수준에서 전체적으로 키를 추가하거나 Debian 상자에 수동으로 사용자를 추가하고 각 사용자의 Authorized_keys에 키를 수동으로 추가하면 작동합니다. 인스턴스 수준에서 추가해도 아무런 효과가 없습니다. Google에 버그를 신고하겠습니다.