공개 키와 개인 키를 생성하기 위해 PuTTYgen을 사용하고 있습니다. 제 질문은 이 파일을 RFC4716 형식으로 어떻게 변환할 수 있느냐는 것입니다.
PuTTYgen을 사용하면 공개 키를 일반적인 형식으로 저장할 수 있습니다. 예:파일 형식: 모든 파일(*.*)기본 PuTTY 형식의 개인 키입니다. PuTTYgen을 사용하면 키를 OpenSSH 또는 ssh.com으로 내보낼 수도 있습니다.
그럼에도 불구하고 파일을 RFC 4716 형식으로 변환할 수 있는 옵션을 찾을 수 없습니다. 누구든지 어떤 해결책을 알고 있습니까? 내 운영 체제는 Windows입니다. 당신이 제공할 수 있는 도움에 감사드립니다!
답변1
tl;dr
예시 키(PuTTY에서 출력):
---- BEGIN SSH2 PUBLIC KEY ----
Comment: "rsa-key-20140607"
AAAAB3NzaC1yc2EAAAABJQAAAQEAs+UjC01Fk8xs8vpLW1RIipwxG1zXTaCkIdeJ
K3SyhMVl78/QwErTYuIop3wVmVAuTKhw4uYCMaRZCy36FdSGQ9FwDCP+lT36M2Xv
ZtraweH+1IPHzRf2ENNdEfs286zllu96WGtqLYwObXQbHMm3dPDDbH3apynrS/FJ
HisCayFXFN84aBfh9HFHrM++BXqpxTX5nq50QoRwSjMY6qMuLwjJKKQslcb5hlRV
SjCmUZKv9/fH+i0BI7UHJ01XHNp1sisL5biWkakXD9BxXjv/ggyeLsOTtdtrF0DK
7wYQXyNmpRqHYOBdrZlskHf/R1CtWoBi5IIeARWZVDduXf1Pww==
---- END SSH2 PUBLIC KEY ----
한 줄 형식(예: 에서 예상한 대로 authorized_keys
)은 다음과 같습니다.
ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEAs+UjC01Fk8xs8vpLW1RIipwxG1zXTaCkIdeJK3SyhMVl78/QwErTYuIop3wVmVAuTKhw4uYCMaRZCy36FdSGQ9FwDCP+lT36M2XvZtraweH+1IPHzRf2ENNdEfs286zllu96WGtqLYwObXQbHMm3dPDDbH3apynrS/FJHisCayFXFN84aBfh9HFHrM++BXqpxTX5nq50QoRwSjMY6qMuLwjJKKQslcb5hlRVSjCmUZKv9/fH+i0BI7UHJ01XHNp1sisL5biWkakXD9BxXjv/ggyeLsOTtdtrF0DK7wYQXyNmpRqHYOBdrZlskHf/R1CtWoBi5IIeARWZVDduXf1Pww==
여기서 변환할 마법의 명령은 없습니다. 자세히 보면 몇 줄을 제거하고 개행 문자를 제거한 다음 앞에 다음을 추가했습니다.ssh-rsa
설명
퍼티가 사용하는 기본 형식은 다음에 정의되어 있습니다.RFC4716.
에서는 3x 형식을 지원합니다 man ssh-keygen
.ssh-keygen
- RFC4716
- PKCS8
- PEM
-m key_format Specify a key format for the -i (import) or -e (export) conver‐ sion options. The supported key formats are: “RFC4716” (RFC 4716/SSH2 public or private key), “PKCS8” (PEM PKCS8 public key) or “PEM” (PEM public key). The default conversion format is “RFC4716”. Setting a format of “PEM” when generating or updating a supported private key type will cause the key to be stored in the legacy PEM private key format.
PuTTY 에서 사용하는 기본값은 ssh-keygen
실제로 동일합니다(RFC4716). 단, id_rsa.pub
파일이 예상하는 대로 한 줄에 입력한다는 점이 다릅니다 authorized_keys
.
예시 키
예를 들어 Debian 10에서 새 키를 생성하겠습니다.
user@disp8452:~$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/user/.ssh/id_rsa.
Your public key has been saved in /home/user/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:lrwmOoBF1PEtDbbVkFwREgWqdJlH5ViEYzQpUAyPyNY user@disp8452
The key's randomart image is:
+---[RSA 2048]----+
| ...+*+oX&Oo |
| ..o.=o@B*. |
| .+ E Xo=.. |
| ... o + . |
| o . S |
|. . . . |
| . . o |
| .. o |
| .. |
+----[SHA256]-----+
user@disp8452:~$ cat /home/user/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCzU4exWqu4tsgWIJleq1AJ98cGHswD80cphWYOasspBoOPgdv1rljgb9PFAQX19X+rofYi+aYd1glP8BhRC3rt4zE26J54h8tt46DBT1TkFPJ2O3ULhLSqcv9zENGkGB0bfXkvhI0p/tP4b1a0NnvmNME9i6qyo8/7mPLovaKwP1qkd7/a+p1DQr2XoId9U6G4rx0TKsvhbjmDvaCWAm4c5LT3WbQHh301DWiwsN8xn8LkxaO4GtdIqxHOyj7lmQZGw8ixuvoIY/FjgXhSPGmaWLyz2o45TrTNP7vWxWqgcDi2CegziD67+UN4tBZvB9HwR6V3aaCrV59H15ukAtK1 user@disp8452
user@disp8452:~$
RFC4716
다음과 같이 PuTTY RFC4716 형식으로 가져올 수 있습니다.
user@disp8452:~$ ssh-keygen -ef /home/user/.ssh/id_rsa -mRFC4716
---- BEGIN SSH2 PUBLIC KEY ----
Comment: "2048-bit RSA, converted by user@disp8452 from OpenSSH"
AAAAB3NzaC1yc2EAAAADAQABAAABAQCzU4exWqu4tsgWIJleq1AJ98cGHswD80cphWYOas
spBoOPgdv1rljgb9PFAQX19X+rofYi+aYd1glP8BhRC3rt4zE26J54h8tt46DBT1TkFPJ2
O3ULhLSqcv9zENGkGB0bfXkvhI0p/tP4b1a0NnvmNME9i6qyo8/7mPLovaKwP1qkd7/a+p
1DQr2XoId9U6G4rx0TKsvhbjmDvaCWAm4c5LT3WbQHh301DWiwsN8xn8LkxaO4GtdIqxHO
yj7lmQZGw8ixuvoIY/FjgXhSPGmaWLyz2o45TrTNP7vWxWqgcDi2CegziD67+UN4tBZvB9
HwR6V3aaCrV59H15ukAtK1
---- END SSH2 PUBLIC KEY ----
user@disp8452:~$
지문 줄은 실제로 동일하므로 , 및 줄 BEGIN
을 제거하기만 하면 PuTTY에서 출력되는 여러 줄 형식과 한 줄 형식 간에 수동으로 변환할 수 있습니다 . 그런 다음 줄 바꿈을 제거하고 앞에 .Comment
END
ssh-rsa
PKCS8
완료를 위해 위 키의 PKCS8 형식은 다음과 같습니다.
user@disp8452:~$ ssh-keygen -ef /home/user/.ssh/id_rsa -mPKCS8
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAs1OHsVqruLbIFiCZXqtQ
CffHBh7MA/NHKYVmDmrLKQaDj4Hb9a5Y4G/TxQEF9fV/q6H2IvmmHdYJT/AYUQt6
7eMxNuieeIfLbeOgwU9U5BTydjt1C4S0qnL/cxDRpBgdG315L4SNKf7T+G9WtDZ7
5jTBPYuqsqPP+5jy6L2isD9apHe/2vqdQ0K9l6CHfVOhuK8dEyrL4W45g72glgJu
HOS091m0B4d9NQ1osLDfMZ/C5MWjuBrXSKsRzso+5ZkGRsPIsbr6CGPxY4F4Ujxp
mli8s9qOOU60zT+71sVqoHA4tgnoM4g+u/lDeLQWbwfR8Eeld2mgq1efR9ebpALS
tQIDAQAB
-----END PUBLIC KEY-----
user@disp8452:~$
PEM
PEM 형식은 다음과 같습니다.
user@disp8452:~$ ssh-keygen -ef /home/user/.ssh/id_rsa -mPEM
-----BEGIN RSA PUBLIC KEY-----
MIIBCgKCAQEAs1OHsVqruLbIFiCZXqtQCffHBh7MA/NHKYVmDmrLKQaDj4Hb9a5Y
4G/TxQEF9fV/q6H2IvmmHdYJT/AYUQt67eMxNuieeIfLbeOgwU9U5BTydjt1C4S0
qnL/cxDRpBgdG315L4SNKf7T+G9WtDZ75jTBPYuqsqPP+5jy6L2isD9apHe/2vqd
Q0K9l6CHfVOhuK8dEyrL4W45g72glgJuHOS091m0B4d9NQ1osLDfMZ/C5MWjuBrX
SKsRzso+5ZkGRsPIsbr6CGPxY4F4Ujxpmli8s9qOOU60zT+71sVqoHA4tgnoM4g+
u/lDeLQWbwfR8Eeld2mgq1efR9ebpALStQIDAQAB
-----END RSA PUBLIC KEY-----
user@disp8452:~$
답변2
RFC 4716 형식은"공개키 저장"명령다음을 생성합니다.
RFC 4716은 다음을 지정합니다.SSH-2 공개 키를 저장하기 위한 표준 형식디스크에. 일부 SSH 서버(예: ssh.com)에서는 해당 개인 키로 인증을 수락하려면 이 형식의 공개 키가 필요합니다. (OpenSSH와 같은 다른 것들은 다른 형식을 사용합니다. 섹션 8.2.10을 참조하십시오.)
에게공개 키를 SSH-2 표준 형식으로 저장하려면 PuTTYgen에서 '공개 키 저장' 버튼을 누르세요.PuTTYgen은 파일을 저장할 위치를 묻는 대화 상자를 표시합니다. 디렉터리를 선택하고 파일 이름을 입력한 후 '저장'을 누릅니다.
RFC 4716 형식의 공개 키는 다음과 같습니다.
---- BEGIN SSH2 PUBLIC KEY ----
Comment: "foobar"
AAAAB3NzaC1yc2EAAAABJQAAAQBZ9s5nqsH6bwB1ljF3DHBRs05PpeWIZEYnYRF5
Ri4CTpUlZq2Ne/32qUUKgLTXpGrsbmASqdYLqow5U91slzb5Lg6zfkZsWz+CgAFV
YPQ5/ZbAZHKstvvES8L/RYJBCczSCuJiQbi60OpRryxP2lVQXbWeLrF/xYThW07p
VhyxxOeB1KocM7gfA6etI7GkQBppFuE/gW1c+efzx6GQNaacimm9k7gSdd+t2JZx
x6WmMmTHxDzCcGz4DCjpctG2AHFu6RcguvhX4G4Dk+Q53Hu1+9OvocJXrXxvPbdu
qU9YwfGHe6ZRXTpV/5XvSXvkIr3moKyXiCAzSD20yffEAXT7
---- END SSH2 PUBLIC KEY ----