웹 프로그래밍

[GCP] SSH 패스워드 방식으로 인증 설정하기 (Feat. Config 수정 후 계속되는 오류 해결)

CSEGR 2025. 6. 11. 11:14
728x90

 

GCP 인스턴스를 생성한 후 로컬 PC에서 해당 인스턴스의 IP 주소로 SSH 접속을 시도했을 때,

다음과 같은 오류가 발생했다 :

gyuri@baggyuliui-MacBookPro ~ % ssh ubuntu@[IP주소]
The authenticity of host '[IP주소] ([IP주소])' can't be established.
------ key fingerprint is SHA256:----------------.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? y
Please type 'yes', 'no' or the fingerprint: yes
Warning: Permanently added '[IP주소]' (-----) to the list of known hosts.
ubuntu@[IP주소]: Permission denied (publickey).

 

이 오류는 SSH 키가 등록되어 있지 않거나, 로컬에서 올바른 개인 키를 사용하지 않았기 때문에 발생한다.

 

GCP에서는 기본적으로 비밀번호 로그인 대신 SSH 키 기반 인증을 사용하기 때문에,  로컬 PC에서 SSH 키를 생성하고, GCP 인스턴스에 공개키를 등록해야 한다.

 

✔️ SSH 키 없이 비밀번호로 접속하고 싶다면?

GCP 인스턴스는 기본적으로 비밀번호 로그인(PasswordAuthentication)을 비활성화해두었기 때문에 아래 설정을 직접 변경해주어야한다.

 

1. GCP VM 인스턴스에서 SSH 연결을 눌러 브라우저 SSH 접속을 한다.

 

2. SSH 설정 파일 열기 : 

sudo nano /etc/ssh/sshd_config

 

2-1. 만약, nano command를 찾을 수 없다 ""bash: nano: command not found"" 는 오류가 뜨면, nano 패키지를 설치해야한다. 

sudo apt update

sudo apt install nano -y

 

config 파일 키면, 아래와 같은 화면이 뜬다.

 

3. 아래 항목을 찾아서 수정 !

PasswordAuthentication yes
PermitRootLogin yes -- root 사용자로 로그인 원할 시

 

4. 저장 및 종료:

Ctrl + O → Enter → Ctrl + X

 

5. SSH 데몬 재시작

sudo systemctl restart ssh

 

6. 비밀번호 설정 (미설정시):

sudo passwd ubuntu

 

새로운 비밀번호와 비밀번호 확인을 입력하면, "" passwd: password updated successfully "" 와 같은 command가 뜨면 성공!

 

7. 로컬 PC 터미널에서 SSH 접속

gyuri@baggyuliui-MacBookPro ~ % ssh root@[IP 주소]
root@[IP주소]'s password:

 

 

❌ 설정했는데도 접속이 안된다.. 

위의 설정대로 설정했음에도 접속이 안되는 경우 발생..

 

1. PasswordAuthentication 설정 부터 제대로 되었는지 확인!

sudo sshd -T | grep passwordauthentication

이 명령어를 쳤을 때, 해당 설정에 대해 "" passwordauthentication no "" 라고 뜨면, 설정이 제대로 되지 않은 것이다. 

설정이 제대로 되지 않았을 경우도 있지만, VM이 다른 설정파일을 읽고 있을 수도 있다. 

 

2. 별도 설정 파일이 존재하는지 확인!

 ls /etc/ssh/sshd_config.d/

 

나 같은 경우에는, 설정파일이 두 개가 있어서 내가 설정한 파일말고 다른 파일로 설정되고 있었던 것이었다 ㅠㅠㅠ😱

root@[VM 이름]:/home/cofla30105# ls /etc/ssh/sshd_config.d/
50-cloudimg-settings.conf  60-cloudimg-settings.conf

 

3. 파일이 있다고 떴을때, password 설정을 확인하는 명령어를 쳐보자!

grep -i password /etc/ssh/sshd_config.d/*

"" passwordauthentication no"" 이라고 뜬다면, 해당 설정을 바꾸어 줘야한다. 

 

우선순위가 높은 config 파일을 만들어줘도 되고, 가장 우선순위가 높은 config 파일을 수정해줘도 된다. 

 

4. config 파일 수정 

sudo nano /etc/ssh/sshd_config.d/60-cloudimg-settings.conf

[nano 패키지 설치]
sudo apt update
sudo apt install nano -y

 

config 파일에 접속 후, PasswordAuthentication 설정을 yes로 수정한다.

PasswordAuthentication yes

 

Ctrl + O → Enter → Ctrl + X 를 눌러 저장 후, SSH 재시작!

sudo systemctl restart ssh

 

5. 비밀번호 설정 (미설정시):

sudo passwd ubuntu

 

6. Local PC 터미널에서 SSH 시도

ssh ubuntu@[IP 주소]

!!! ubuntu 자리에는 사용자명

 

짜쟌!!!!!!!!! 비밀번호로 접속 성공!!!!

 

정리해보자면,

  • GCP의 Cloud Image는 /etc/ssh/sshd_config.d/60-cloudimg-settings.conf에서 보안을 위해 비밀번호 인증을 기본적으로 차단함. -> /etc/ssh/sshd_config는 적용 우선순위가 낮아서 설정이 덮어씌워짐.
  • 따라서 /etc/ssh/sshd_config.d/99-user-override.conf 같은 번호가 더 큰 파일로 override 하거나, 우선순위가 가장 높은 config 파일을 수정하면됨.

 

다만,, 비밀번호 로그인 허용은 보안상 취약하므로 특히 퍼블릭 IP가 열려 있는 VM이라면 해킹 시도 대상이 될 수 있으니 참고하세요!!

728x90