필자는 라즈베리 파이에 핫스팟을 이용하여 SSH로 접속한다.
최근 핫스팟 비밀번호의 보안을 강화하고자 핫스팟 비밀번호를 변경하기로 하였고, 이에 라즈베리 파이에 저장된 비밀번호 또한 변경해 주기 위해 설정 파일을 열었다.
그런데, 설정 파일에 저장된 비밀번호가 사전 설정 단계에서 입력한 비밀번호와 다르다는 것을 확인하였다.


왜 이러한 현상이 일어나는지 알아보자.
왜 이런 일이 일어나나요?
핫스팟에서의 PSK(Pre-Shared Key) 생성 방식 때문이다.
Ubuntu Server와 같은 보안 중심 운영체제는 비밀번호를 원문 그대로 저장하지 않을 가능성이 있다.
이 때문에 핫스팟이 WPA2-PSK 방식인 경우, 입력된 비밀번호는 라우터나 핫스팟에서 PSK(Pre-Shared Key)로 변환되어 기기(라즈베리 파이)로 전달된다.
즉, 저장된 비밀번호는 실제 입력값이 아니라 암호화된 키 값이다. 비밀번호 자체가 아닌, SSID와 비밀번호를 조합한 해시값이 저장된 것이다.
계산하기
진짜로 그런 것인지 확인하기 위해 아래의 방법으로 PSK 값을 직접 계산하여 검증한다.
아래는 PSK 값을 직접 계산해주는 python 코드이다.

import hashlib
from binascii import hexlify
from hashlib import pbkdf2_hmac
password = "비밀번호 원문".encode() # 비밀번호 원문 입력
ssid = "SSID".encode() # SSID 입력
psk = pbkdf2_hmac('sha1', password, ssid, 4096, 32)
print(hexlify(psk).decode()) #PSK 변환 값 출력
"비밀번호 원문"의 자리에 자신이 설정한 비밀번호를, SSID 자리에 핫스팟의 이름을 넣고 실행하면 된다.

저장된 비밀번호와 동일한 값이 나온 것을 알 수 있다.
즉 저장된 비밀번호는 해시 값이었던 것이다.
비밀번호 변경하기
비밀번호 저장 원리도 알았으니, 이제 비밀번호를 변경할 수 있다.
(당연히) 라즈베리 파이의 비밀번호를 먼저 변경하고, 이후 핫스팟 단말기의 비밀번호를 변경한다.
물론 비밀번호를 변경하기 이전, 미리 설정 파일을 백업해 놓는 것이 좋다.
아래의 명령은 설정 파일을 홈 디렉터리에 복사한다. 이름이 다르다면 변경하여 실행한다.
sudo cp /etc/netplan/50-cloud-init.yaml ~
이제 설정을 변경해보자.
전술한 코드를 통해 새로운 비밀번호의 해시를 생성하고, 아래의 명령을 입력하여 설정 파일을 연다.
sudo nano /etc/netplan/*.yaml
보통 50-cloud-init.yaml과 같은 이름으로 열린다. 운영체제에 따라 다를 수 있다.
새로이 계산된 해시 값을 입력한 후 저장한다.
이후 재부팅한다.


핫스팟 설정을 변경한다. 이후 라즈베리 파이가 잘 연결하는지 확인한다.


잘 연결되었다!
'Raspberry Pi' 카테고리의 다른 글
| Raspberry Pi #11 - arduino-cli에서 Arduino R4 Minima 사용 (0) | 2025.09.01 |
|---|---|
| Raspberry Pi #10 - Arduino CLI를 이용한 Arduino 프로그래밍 (3) | 2025.08.01 |
| Raspberry Pi #8 - Raspberry Pi 5에서 BitNet AI 모델을 로컬로 실행 (2) | 2025.05.01 |
| Raspberry Pi #7 - 시간 동기화 설정 (0) | 2025.05.01 |
| Raspberry Pi #6 - wiringPi 라이브러리를 이용한 핀 제어(C/C++) (1) | 2025.04.01 |
댓글