PEM 키를 사용해 SSH 원격 접속하는 방법
PEM 키를 사용해 SSH 원격 접속하는 방법에 대해 설명하는 페이지입니다.
Tags
Raspberry Pi, Linux, PEM, SSH
Environment
Device: Raspberry Pi 4 Model B
OS: Raspberry Pi OS (64 bit)
RAM: 4GB
개요
이번 글에서는 PEM 키를 생성하고 사용해서 비밀번호 없이 SSH 원격 접속하는 방법에 대해 설명하겠습니다.
PEM 키란?
PEM(Privacy Enhanced Mail)은 개인 키(Private Key), 공개 키(Public Key), 인증서 등을 저장하는 파일 형식입니다. 주로 SSH 접속 시 비밀번호 대신 사용합니다. PEM 포맷은 Base64 인코딩된 텍스트 형식으로 되어 있으며 다음과 같이 세 부분으로 구성됩니다.
Header:-----BEGIN <데이터 라벨>-----Body: Base64로 인코딩된 텍스트 데이터Footer:----END <데이터 라벨>----
다음은 비밀 키(Private Key) 예시입니다. (출처: https://namu.wiki/w/PEM#s-3.1.1)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCqDz5Qo0/v6UUx
IdC3Nl/1We8Q1v+557o1t18VpMobUx8R50rS6OsuedAobaBWCcx5l3kMl14Nmb2r
c/a75OiZaUnq6GlgEjBV9PT1q65nUCyALN7LoePeO4ZaBntOgSHmLVeje1ZO7H+X
FLATmURsO+u56r4qJ5Dtv7hA/W4jLgzybfJSk1/JqOpC6iVU4D4GhUfCc+U09Jm7
QBU+21718gRi0oHzmPqXRtLW4KA7uy+Mjt1RB/cPUStwqAK4oFlX1wkCbdUG3SVP
WufOLLsTpxI44la2fy9+XXUbRHsne+9QPiVlhZTtA9uIFSiKOHSsV0zlpgXn5o35
mwcPD0sZAgMBAAECggEAASwlZgFCPKld40FUQuHFQUKd+H6Vo8P6ZNgUopMQxlBz
5I001wW+aAMfUXAJYh5415ZuQg0hxl6QJV2heVkngLXuSbLRgH/k78Abwj0tRiQS
MniyDohZXapeZOzU2SKLHR756DQiUQf7YeDFd//KA3mu8zNa8p0e4tdmtKKqqY5r
AQoaiRksrFPAa/m54h5veojUFyyKk4wpqw11NZBNVnL16I0r26MZ/ZS6wLO/QK9J
PKRBfGe5IYE5B64wWZz64Ns0/7d7jEmfuE9+M4tQ3IsFdHmRXVtHken7PFSunU3Y
lDK/Ozchh4z2w46pCA+mvpiLhwbZKeZt/PNTol0KgQKBgQDCUO3XW7Xtiu8maj2U
fzdZD1hGnnJrBnx+5YpvFVVGwlKV3OYu2ulOJhRBJEAN38+nXfxA+zld+s0U8zKM
AeC5XhgtwfPddA5DsT2KZRnA/S5y9WivBbcbUTWlFo37BHq8CFveO8jYEBlx7Jn5
0fcH4LKTJicICpfz8KgiYTkT4QKBgQDgCxtOUHRhb36Cv/GslyfA0NoeUXJGGadK
xxiO02WqnWeD87M+5wn4izrg9p30Cdac5zAMPPKmXC1JcVebRqlwSWVrNN88Kl2P
mFQIfyk4rjE77N6xFPwOlvuI1IF2OrqiBbFPBaYHvNAr7reRRhSWHDeWxKpqgdiI
ccbXQbWeOQKBgQCYC1sPN+OSizO1i0vD9gcI2Mjp+PDubZTcdh9r6/Vd+I9GVCKI
ZyJG0+TlU8gLEyUYgKHw9qJctvHhgqn6gz2jzcx9gVWf4j+HGBhfQdx09aZyrTPM
P1yXM2QWWR+fWlHu71ty+LSe23oNemTA5Vm2AEu6eA/yatebOKNWw1w2AQKBgGJ3
HyodG/kSqlRGja2fxR3t7F70xrdeYPLxa66h5AXHJg6NFZMosW4lqtviJ2tww3yz
8p7+TlqlGlYz1R/uP1uVNliWpSHpMLOCbDRLxs8dZ5ABu6GyKlEzNBtf4gIXL50z
yUiEoAK4jfkw8kaLuVJ71kaR6p/ir0rQTmaef3apAoGARpMuYivBXLwb5h3E3XAe
zTimXlFEJSRRtZv9lxjbv4h8uSO5p6loK8hyaBwQ2zWtWKuHVS1TdhgNtL29uehH
HgPhljkoZQ1cI2opPVwbznG5aCcjaNMRfeQmbN037/aWciS3WwxtM4Ayn6apZPXM
hOd+icEvFHFpU1N2PAnyHsg=
-----END PRIVATE KEY-----
Step 1 - PEM 키 생성하기
PEM 키를 생성하는 방법은 여러 가지가 있지만 이번 글에서는 SSH 원격 접속 용도로 활용할 것이므로 SSH 키를 PEM 파일로 변환하는 방법을 선택하겠습니다. ssh-keygen을 사용하려면 OpenSSH가 설치되어 있어야 합니다. Windows 10 이상에서는 기본적으로 OpenSSH 클라이언트가 설치되어 있습니다. OpenSSH가 설치되어 있다면 먼저 서버에 원격 접속하려는 컴퓨터에서 다음과 같이 ssh-keygen 명령을 사용하여 PEM 키를 생성합니다.
1
2
cd ~/.ssh
ssh-keygen -t rsa -b 2048 -m PEM -f my_key.pem
위의 명령어를 설명하자면 다음과 같습니다.
-t rsa: RSA 알고리즘 사용-b 2048: 키 길이를 2048 비트로 설정(기본은 2048 비트)-m PEM: OpenSSL과 호환되는 PEM 형식 사용-f my_key.pem: 생성할 파일의 경로와 이름을 지정
명령어를 실행하면 다음과 같은 결과를 얻습니다.
여기서 my_key.pem은 개인 키, my_key.pem.pub은 공개 키입니다. 개인 키는 ./ssh/my_key.pem과 같이 보관하며, 공개 키는 원격 접속 대상 서버에 전달해야 합니다.
Step 2 - authorized_keys에 공개 키 추가하기
먼저 위에서 생성한 공개 키를 원격 접속 대상 서버에 추가해야 합니다. 복사-붙여넣기로 추가하거나, 아니면 다음과 같이 SCP 명령어를 활용하여 파일을 전송한 후 추가할 수 있습니다.
1
scp my_key.pem.pub root@192.XXX.XX.XXX:.ssh/my_key.pem.pub
이후 공개 키를 Raspberry Pi의 ~/.ssh/authorized_keys 파일에 추가합니다.
1
cat my_key.pem.pub >> ~/.ssh/authorized_keys
또는 권한 문제로 안되는 경우 다음 방식으로 직접 파일을 열고 공개 키를 추가할 수 있습니다.
1
sudo nano authorized_keys
authorized_keys 파일에 공개 키를 추가하였으면 다음 명령어를 입력하여 불필요한 공개 키 파일을 삭제합니다.
1
sudo rm -rf my_key.pem.pub
Step 3 - PEM 키로 SSH 원격 접속하기
공개 키를 추가하였으면 이제 PEM 키를 사용하여 비밀번호 없이도 SSH 원격 접속이 가능합니다. 다음 명령어를 입력하여 SSH 원격 접속이 잘 되는지 확인합니다.
1
ssh -i my_key.pem root@192.XXX.XX.XXX
Step 4 - SSH Config 설정하기
위의 PEM 키로 원격 접속하는 방식은 항상 PEM 키가 존재하는 폴더에서 SSH 명령어를 입력해야하는 불편함이 있습니다. SSH의 config를 설정하면 좀 더 편리하게 SSH 원격 접속을 할 수 있습니다. 먼저 다음과 같이 서버에 원격 접속하려는 컴퓨터의 ~/.ssh 경로에 config 파일을 생성합니다.
이후 다음과 같이 SSH Config를 설정합니다.
1
2
3
4
5
Host raspi-local
HostName 192.XXX.XX.XXX
User root
IdentityFile ~/.ssh/my_key.pem
Port 22
설정 내용에 대해 설명하자면 다음과 같습니다.
Host raspi-local: 접속에 사용할 별칭(Alias)HostName 192.XXX.XX.XXX: 원격 접속 대상 서버의 IP 주소 또는 도메인User root: 로그인할 사용자 이름IdentityFile ~/.ssh/my_key.pem: 사용할 개인 키 파일 경로Port 22: SSH 포트 번호 (Default: 22)
설정한 후 아래와 같이 편리하게 SSH 원격 접속을 할 수 있습니다.
1
ssh raspi-local






