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

2개의 댓글

comment-user-thumbnail
2023년 12월 26일

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

답글 달기
comment-user-thumbnail
2024년 6월 17일

This summary provides a clear and concise explanation of the key differences between PuTTY and OpenSSH key formats, highlighting practical steps to convert keys for compatibility. Your attention to detail and inclusion of specific commands, like using puttygen, make it very helpful for users who might face similar issues. The additional note on the role of key comments adds valuable context, making your summary both informative and user-friendly. Great job!
Love from: slice masters

답글 달기