PuTTY로 WSL 리눅스 접속 (비밀번호, 키 방식)

 

WSL Ubuntu 내에 SSH 서버를 설치하고 실행해야 합니다. 
PuTTY는 SSH 클라이언트이기에 WSL 리눅스에서 SSH 연결을 받아줄 SSH 서비스(데몬)가 있어야 합니다.

먼저 WSL Ubuntu에 들어간 후, 다음 단계를 순서대로 진행하세요.

 

먼저 아래 명령으로 SSH 데몬 서비스가 active 상태로 동작 중인지 확인합니다.

sudo service ssh status

 

만약 SSH 서비스가 없다면 아래처럼 설치를 진행합니다. 


1단계: WSL Ubuntu에 SSH 서버 설치

먼저 Ubuntu에 openssh-server 패키지를 설치합니다.

 

sudo apt update
sudo apt install openssh-server


2단계: SSH 서버 설정 변경

설치 후, SSH 설정 파일을 수정하여 포트 번호와 인증 방식을 확인합니다.
설정 파일을 엽니다.

sudo nano /etc/ssh/sshd_config
설정 파일( sshd_config ) 내에서 다음 항목들을 확인하고 수정합니다.

포트(Port) 변경 (선택): 그냥 기본 22번 포트를 사용해도 됩니다.

보안을 위해서는 다른 포트 번호(예: 2222)를 사용하는 것이 좋습니다.  

Port 2222

비밀번호 인증 허용(초기 설정 시): 

PuTTY로 쉽게 접속하기 위해 비밀번호 인증을 허용합니다. (기본은 yes로 되어 있을 것임)
PasswordAuthentication yes

 

Ctrl+O를 눌러 저장하고 Enter를 친 다음, Ctrl+X를 눌러 편집기를 종료합니다.

 

[참고] 공개키/비밀키 방식으로 SSH 접속하려면 뒤에 나오는

"SSH 키(공개키 인증 방식)를 사용하기" 내용을 참조하여 작업합니다.

 

3단계: SSH 서버 실행

설정을 변경했으므로 SSH 서비스를 다시 시작합니다.
sudo service ssh restart

다음 명령어로 SSH 서버가 실행 중인지 확인할 수 있습니다.
sudo service ssh status
( * sshd is running 과 같이 나오면 성공입니다.)

[주의] WSL은 윈도우가 재부팅되거나 WSL 세션이 완전히 종료되면 SSH 서버가 자동으로 시작되지 않을 수 있습니다. 
접속이 안 되면 WSL 터미널에서 sudo service ssh start 또는 restart 명령을 다시 실행해 보세요.


4단계: PuTTY로 접속

이제 윈도우에서 PuTTY를 실행하여 WSL에 접속합니다.

Host Name (or IP address): localhost (또는 127.0.0.1)

WSL 2는 윈도우 호스트의 localhost를 통해 포트가 자동으로 전달되므로 localhost를 사용하면 됩니다.

Port: 2222 (또는 2단계에서 설정한 포트 번호 또는 22(기본 포트))
Connection type: SSH (기본값)
Open 버튼을 클릭합니다.

처음 접속 시 보안 경고창(서버의 호스트 키)이 나타날 수 있습니다. 
'Accept' 또는 **'예'**를 클릭하여 키를 저장합니다.

이후 WSL Ubuntu의 사용자 이름(login as:)과 비밀번호를 입력하면 성공적으로 접속됩니다. 
(윈도우 계정이 아닌 Ubuntu 계정입니다.)

 

-------------------------------------------------------------------------------

SSH 키(공개키 인증 방식)를 사용하기 

비밀번호 방식보다 훨씬 안전하고 편리한 방법입니다.
WSL Ubuntu와 PuTTY 간에 SSH 키를 설정하는 과정은 크게 3단계로 나뉩니다.


1) 윈도우(PuTTY)에서 키 쌍 생성
2) WSL Ubuntu에 공개키 등록
3) PuTTY에 개인키 설정


1단계: 🔑 윈도우에서 SSH 키 쌍 생성 (PuTTYgen)

먼저 윈도우에서 PuTTY의 키 생성 도구인 PuTTYgen을 사용해야 합니다. 

(PuTTY 설치 시 보통 함께 설치됩니다.)

 

시작 메뉴에서 PuTTYgen을 검색하여 실행합니다.
하단의 'Parameters'에서 'RSA' (또는 'Ed25519')가 선택되었는지 확인합니다.
'Generate' 버튼을 클릭하고, 키가 생성될 때까지 빈 공간에서 마우스를 무작위로 움직입니다.

키 생성이 완료되면,
Key passphrase (선택 사항): 키 자체를 암호로 한 번 더 보호합니다.

                                              입력 시, 나중에 접속할 때마다 암호를 물어봅니다. (보안 향상)
Confirm passphrase: 위 암호를 다시 입력합니다.

[중요] 상단의 Public key for pasting into OpenSSH authorized_keys file 상자에 있는 
텍스트 전체 (ssh-rsa ... 로 시작하는 텍스트)를 복사합니다. 

(이것이 WSL Ubuntu에 등록할 '공개키'입니다.)

'Save private key' 버튼을 클릭하여 개인키를 .ppk 파일로 저장합니다. 
(예: wsl_key.ppk) 이 파일은 절대 외부에 노출되면 안 됩니다.


2단계: 🖥️ WSL Ubuntu에 공개키 등록

이제 1단계에서 복사한 '공개키' 텍스트를 WSL Ubuntu의 특정 파일에 붙여넣어야 합니다.
(아직은 비밀번호로) WSL Ubuntu에 접속하거나 Windows Terminal에서 WSL을 엽니다.
홈 디렉터리에 .ssh 폴더가 없으면 만들고, authorized_keys 파일을 엽니다.

mkdir -p ~/.ssh
nano ~/.ssh/authorized_keys
PuTTYgen에서 복사한 공개키 텍스트(ssh-rsa ...)를 nano 편집기 안에 붙여넣기 합니다. 

(PuTTY에서는 마우스 오른쪽 클릭)

파일을 저장하고 종료합니다. ( Ctrl+O , Enter , Ctrl+X )

[중요] SSH는 권한에 매우 민감합니다. 다음 명령어로 정확한 권한을 설정해야 합니다.
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
권한 설정 실패 시: 권한이 너무 개방적이면(예: 644 또는 755) SSH 서버는 보안 이유로 키 파일을 무시해 버립니다. 
키 로그인이 안 되면 대부분 이 권한 문제입니다.


3단계: 🔌 PuTTY에 개인키 설정 및 접속

마지막으로 PuTTY가 1단계에서 저장한 '개인키'(.ppk 파일)를 사용하도록 설정합니다.
PuTTY를 실행하고 이전 세션 정보(localhost, 포트 2222)를 불러오거나 입력합니다.

왼쪽 카테고리 메뉴에서 Connection > SSH > Auth로 이동합니다.
'Credentials' 섹션에서 'Browse...' 버튼을 클릭합니다.
1단계에서 저장한 .ppk 개인키 파일(예: wsl_key.ppk)을 선택하고 **'열기'**를 누릅니다.
(선택 사항) 다시 왼쪽 카테고리의 **'Session'**으로 돌아가서 이 설정을 저장(Save)해두면 다음부터 편리하게 사용할 수 있습니다.

'Open'을 눌러 접속합니다.

이제 PuTTY는 WSL Ubuntu에 사용자 이름을 물어본 후, 비밀번호 대신 개인키를 사용해 인증을 시도합니다. 
1단계에서 'Key passphrase'를 설정했다면 해당 암호를 물어볼 것입니다.

(선택 사항) 🔒 보안 강화: 비밀번호 접속 비활성화
키를 이용한 접속이 완벽하게 작동하는 것을 확인했다면, 보안을 위해 아예 비밀번호 로그인을 차단할 수 있습니다.

[주의]: 키 기반 로그인이 확실히 작동하는지 새 터미널을 열어 다시 테스트한 후에 진행하세요. 
잘못 설정하면 SSH로 영영 접속하지 못할 수 있습니다. 

(물론 WSL은 wsl 명령어로 로컬 접근이 가능하므로 괜찮습니다.)

WSL Ubuntu에서 sshd_config 파일을 다시 엽니다.

sudo nano /etc/ssh/sshd_config
다음 항목을 찾아 no로 변경합니다.

PasswordAuthentication no
(주석 처리 #가 되어 있다면 맨 앞의 #도 제거해야 합니다.)

SSH 서버를 재시작합니다.
sudo service ssh restart

이제부터는 오직 SSH 키를 가진 사용자만 해당 SSH 서버에 접속할 수 있습니다.

 

 

반응형

+ Recent posts