SSH Key 와 comment

Seunghyun Moon·2023년 5월 4일
0

키 방식을 이용해 서버와 인증을 하고 통신을 할 때 주로 사용되는 프로토콜은 SSH입니다.

여기서는 OpenSSH 와 PuTTy 를 통해 생성한 키의 차이점을 설명합니다.


요약

OpenSSH 가 SSH 프로토콜을 사용하기 위한 사실상의 표준이지만 주로 윈도우 환경에서 PuTTy도 널리 사용되고 있습니다.(OpenSSH도 OpenSSH server 로 윈도우에서 사용가능하다고 합니다.)

PuTTy로 생성된 키(.ppk)는 OpenSSH 로 생성된 키(.pem)와 file format 이 다르기 때문에 OpenSSH 키와 호환되지 않습니다.

서버의 public 키가 pem 만 지원한다면 PuTTY 키로 인증이 실패하게 됩니다.

예를 들어 AWS의 EC2(pem 포맷으로 키를 생성)에 로그인할 때, 키를 PuTTy로 만들었다면 PuTTy gen 을 활용해 타입을 바꿔주는 이유도 같은 이유입니다.(.ppk → .pem)

puttygen privatekey.ppk -O private-openssh -o privatekey.pem

*text file로 저장되지만 파일의 내용을 vi 등으로 열어서 안의 내용을 바꾸더라도 그대로 사용할 수는 없다고 합니다.

키의 comment는 그 자체로 인증에 어떤 역할도 하지 않습니다.

comment를 통한 user의 구분, 생성 날짜, 생성된 machine 등의 부가적인 정보 전달만 합니다.


SSH Key

OpenSSH

OpenSSH를 사용해 key를 생성하는 방법으로 ssh-keygen이 있습니다.
생성 예시

$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/we/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /Users/we/.ssh/id_rsa
Your public key has been saved in /Users/we/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:/sVAwaL5lV6/U7abdAYe+R9Hszc8YgxFMbuvaRKIERA we@weui-MacBookPro.local
The key's randomart image is:
+---[RSA 3072]----+
|     Eo  ..  +.  |
|       .. ... o  |
|       o.... o   |
|      o. .o o .. |
|       .Sooo o+..|
|       o...+o.+==|
|        .   ++.%B|
|         . o..BoX|
|          . oo +o|
+----[SHA256]-----+
$ cd ~/.ssh
$ ls
id_rsa                     id_rsa.pub

생성된 키의 모양은 아래와 같습니다.

공개키 - id_rsa.pub

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDaFq8KHJCXnjWA7GD8CAff25U5sOmVEkwNEhX1srzkF6Hzm6v5tkyqB6RFxsuvkU71k8sKgZjoOWCQV0t+stqd4S0hf7wN4u2CvE9bUrRzHe6XnJaLkoJ9K9zFrw9iLwCjYhyiUXxLyWDipDtdealRZX4niX4xRyaCexJqiSlT7giM5cXtUixfljkptGYnIYj+uRuNDAbT7lJqbCPswTGbkp95MQYjaELgSxZ8Dqnk76bWVESNIkf2czORUU4t6DZp+VtBGfAVCtY1SuJNJcZlNxqvRqDehdxC+IZklX0Bh7r5q82d7xOhmL170LeUTDLcEuDHV3I4P34YqKPuhqRCgUfey63XGQ5Nxq6OocFd3SawzKuzdrvDATiMOhaJ0Uivq9jC0LdLvTHyEBTXi5gtxHSruC/73wyHVhw6BsLcvPWu4mr5F3cX3P4cuK31MrOgj1VFTS7x2shEabHc3pgCNlFD7Y6jAiVA/p/sXlN2ae3qiMlaKMU0Yad/OYjzMD0= we@weui-MacBookPro.local

개인키 - id_rsa

-----BEGIN OPENSSH PRIVATE KEY-----
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
-----END OPENSSH PRIVATE KEY-----

PuTTy(PuTTygen)

PuTTy와 PuTTy tool chain 은 설치가 필요합니다.(https://www.puttygen.com/)

Mac 의 경우 brew 로 설치합니다.

brew install putty

puttygen 을 사용해 키를 생성합니다.(여기서 생성한 .ppk 파일이 개인키이자 키페어가 됩니다.)
puttygen 키 페어

$ puttygen -t rsa -o putty_key.ppk
$ ls
putty_key.ppk
$ cat putty_key.ppk
PuTTY-User-Key-File-3: ssh-rsa
Encryption: none
Comment: rsa-key-20230301
Public-Lines: 6
AAAAB3NzaC1yc2EAAAADAQABAAABAQCemS7eyl9ZefFnGJmIFAK3sQpGkq4xkFXg
6aYTOsug0bRzvfyxW5D8DOELqVZr1vw3SFhPxheNvhNtGl0cY09thurvzAv8gj61
yfdzrP/MeRO2u7YDMZpzwIOqJ/aKUMOG1Z84NdPKhlDJP/m0NlcKHlro3zxGA1JZ
LNgPzbA/3XmhSsurwaPCH3V0P1CpkBy44dkQ8po5LO7q0Rz9wlSZj+cTPoIgn46Y
QuMkKKPPbLLT29PS4TzT1Jl0MfFgA6QkpDvKqt6/mjlOvz4ORVTeD4b8whvqnhiH
gEuVQva9pj06xIjqHNXA0EhjOq2m93Vrh0cK3n2Ztt6DQq2wm++R
Private-Lines: 14
AAABAG1y0xim2hRahhCatmFlRdbUk33Ofe3waIOVWqnMmnf6ICj7xKX0xeJbVPcC
PoSfUWEpSOCMmPaVZLyXRAhyNH8ma31e+CqjC3nSzjUC/2hxafxiICKmGaumAHbt
q0Map0SmqYFWDDmoZZnsz3rhQUHXXu90FxlN84dc3iJR1T7MkxqaW5wk4iZ5aA3I
8Oe14wQR61pfVHhjui6boZgWzpklgvJwpNVik/VufdGQFd+mVsVEibbFfHkvXqJx
I7v9t8w7F5bv3YePev9KR3MeGdeLCm8JkqeEt3heoArR0P+dzyQXnp2vLH9cW/ep
fBZdfJQGWTyoRBgt3nMnB6ufO00AAACBAPFe7dbo3c4Sf5uI9ZBvjhZUtmWOaz65
EVRWa7XDh7+6oGSxquVAgdyloIh1YQZFXygcBcz2J5Teeo4TB4vcGFqBm6iSoWkW
e3btyvuebPfQvXoxXKQa1JbABFnRIhRhyxMIc70Dsd0tgG76kAOZU90Vm+p0cJP2
27p0d3Z6Q+HnAAAAgQCoNfhTUHmN+SSztfNmB/dPvmsiHNNcEWs5evoCL7cfO3tA
SpYuWI3l4xDTWXZJA9V09kYBXUDaEMhZMuwExhX6pav9b1dtl5zYhIFRCc8QVATN
ssSo3RY6KgeyHPZqbkr8c0TyBU1FKwbVsJzU8rn/vcxbyKgEc8pghXiqlU1jxwAA
AIBddtoG8vTmpBFDcCgPEyNWPhJ2OqPcb/7eCNnX9oR30aSf3RufJnhcmsvDhl7v
/SNO8PKS2rTWm4z4pMCgnzOLpRBmlfY8UBxzt/RoCTX5ZQgMo8qcm6sSmw6zaWFg
twxrECyGTZOBJnChT0+puXVWqPkZ+KtOnjdznSPRE7Eiyg==
Private-MAC: bcf2bc7dbf57d7598204301db4d9cc84b5690150fd44b458222a59db0b56f779

키페어에서 퍼블릭키를 추출합니다.

$ puttygen putty_key.ppk -O public -o putty_key.pub
$ cat putty_key.pub
---- BEGIN SSH2 PUBLIC KEY ----
Comment: "rsa-key-20230301"
AAAAB3NzaC1yc2EAAAADAQABAAABAQCemS7eyl9ZefFnGJmIFAK3sQpGkq4xkFXg
6aYTOsug0bRzvfyxW5D8DOELqVZr1vw3SFhPxheNvhNtGl0cY09thurvzAv8gj61
yfdzrP/MeRO2u7YDMZpzwIOqJ/aKUMOG1Z84NdPKhlDJP/m0NlcKHlro3zxGA1JZ
LNgPzbA/3XmhSsurwaPCH3V0P1CpkBy44dkQ8po5LO7q0Rz9wlSZj+cTPoIgn46Y
QuMkKKPPbLLT29PS4TzT1Jl0MfFgA6QkpDvKqt6/mjlOvz4ORVTeD4b8whvqnhiH
gEuVQva9pj06xIjqHNXA0EhjOq2m93Vrh0cK3n2Ztt6DQq2wm++R
---- END SSH2 PUBLIC KEY ----

.ppk 파일은 개인키가 되고 public으로 추출한 .pub 파일은 공개키가 돼 서버에 저장됩니다.

puTTygen으로 생성한 키(개인키이자 키페어)는 OpenSSH 포맷으로도 추출 가능합니다.

puttygen pp_id_rsa.ppk -O private-openssh -o id_rsa
puttygen pp_id_rsa.ppk -O public-openssh -o id_rsa.pub

Key의 Comment

키의 comment는 default로 puTTygen 으로 만드는 경우 생성 날짜(ex, "rsa-key-20230301"), openssh로 만드는 경우 username@hostname(ex, "we@weui-MacBookPro.local") 로 생성됩니다.

comment는 그 자체로 인증에 어떤 역할도 하지 않습니다.

comment를 통한 user의 구분, 생성 날짜, 생성된 machine 등의 부가적인 정보 전달만 합니다.

변경 예시(ssh-keygen)

ssh-keygen -c [-a rounds][-C comment] [-f keyfile][-P passphrase]

$ sudo ssh-keygen -c -f id_rsa -C "testcomment"
Old comment: we@weui-MacBookPro.local
Comment 'testcomment' applied

*comment 변경은 개인키에서만 가능합니다. 개인키에서 comment 변경 시 같은 디렉터리에 public키가 생성됩니다.(이미 존재하면 덮어씁니다.)

변경 예시(puttygen)

puttygen keyfile [-C comment]

$ puttygen putty_key.ppk -C "testcomment"
$ cat putty_key.ppk | grep Comment
Comment: testcomment

*comment 변경은 .ppk파일(개인키이자 키페어)에서만 가능합니다.


참고

https://unix.stackexchange.com/questions/74545/what-is-the-difference-between-an-openssh-key-and-putty-key
https://www.baeldung.com/linux/ssh-key-types-convert-ppk
https://www.baeldung.com/linux/ssh-key-comments
https://aws.amazon.com/ko/premiumsupport/knowledge-center/ec2-ppk-pem-conversion/
https://www.puttygen.com/
https://www.ssh.com/academy/ssh/putty/linux/puttygen

profile
I live fullest

1개의 댓글

comment-user-thumbnail
2023년 12월 26일

SSH 키(SSH key)는 안전하고 보안된 방식으로 suika game 컴퓨터나 서버에 접속하기 위한 암호화된 인증 수단입니다. SSH 키는 두 부분으로 구성됩니다: 개인 키(private key)와 공개 키(public key).

답글 달기