puttyen ppk를 dropbear 키로 변환하기

OpenWrt는 dropbear라는 ssh 클라이언트를 사용하고(openssh를 이용 원할 경우 별도 설치필요), 윈도우는 대체로 putty라는 ssh 클라이언트를 사용하며 키 생성은 puttygen 이라는 프로그램을 사용합니다.

만약 OpenWrt에 ssh로 로그인한 상태에서 다른 호스트에 직접 ssh로 접속을 할때 기존에 윈도우에서 puttygen으로 생성한 ssh키를 그대로 사용을 하고 싶다면 번거롭지만 변환과정을 거쳐야 합니다.

이유는 puttygen으로 생성한 ssh 키와 openssh의 ssh-keygen, dropbear의 dropbearkey로 생성한 키는 서로 호환되지 않기 때문이죠. 따라서 puttygen으로 생성한 키를 openssh 형식으로 1차 변환 후 다시 dropbear 형식으로 2차 변환을 거쳐야 합니다.

1. puttygen to openssh

puttygen으로 생성한 private 키를 openssh 형식으로 변환합니다.

화일 이름은 임의대로 정해 저장하고, 저장한 화일을 윈도우 메모장같은 편집기로 열어 전체를 복사해 클립보드에 저장합니다.

2. openwrt 접속 및 openssh 형식 키 저장

OpenWrt에 ssh로 로그인해 vi 편집기를 열고 복사한 openssh 형식의 private 키를 붙여넣기 후 저장합니다. 아래 예에서는 화일 이름은 id_ed25519로 하였습니다.

cd ~
vi id_ed25519

3. openssh to dropbear

openssh 키 형식을 dropbear 형식으로 변환하기 위한 dropbearconvert 패키지 설치를 설치합니다.

opkg update
opkg install dropbearconvert

openssh 형식의 private 키를 dropbrear 형식의 private 키로 변환

dropbearconvert openssh dropbear id_ed25519 /etc/dropbear/dropbear_ed25519_myhost_key

4. public key 추출

필요한 경우 dropbear 형식의 private 키에서 public 키 추출할 수 있습니다.

dropbearkey -y -f /etc/dropbear/dropbear_ed25519_myhost_key | grep -e "^ssh-.*"

[email protected]:/etc/dropbear# dropbearkey -y -f dropbear_ed25519_myhost_key | grep -e "^ssh-.*"
ssh-ed25519 AAABC3NzaC2lZDI1NTE5ACAAIEJTQdFr7Xu59NGA/QPAnT8Ruvn30sPtz9FdpwZO/p3v [email protected]
[email protected]:/etc/dropbear#

5. 대상 호스트에 public key 등록

대상 호스트에 ssh로 로그인하여 public 키를 /etc/dropbear/authorized_keys (또는 ~/.ssh/authorized_keys)에 등록합니다.

echo "ssh-ed25519 AAABC3NzaC2lZDI1NTE5ACAAIEJTQdFr7Xu59NGA/QPAnT8Ruvn30sPtz9FdpwZO/p3v [email protected]" >> /etc/dropbear/authorized_keys

[email protected]:~# echo "ssh-ed25519 AAABC3NzaC2lZDI1NTE5ACAAIEJTQdFr7Xu59NGA/QPAnT8Ruvn30sPtz9FdpwZO/p3v [email protected]" >> /etc/dropbear/authorized_keys
[email protected]:~#
[email protected]:~#
[email protected]:~# cat /etc/dropbear/authorized_keys
ssh-ed25519 CCCCCDDDDDDDDDDDDDDDDFFFFFFFFFFFFFFFFFGFFFFFFFFFFFFFFAAAAAAAAAAAAADD [email protected]
ssh-ed25519 AAABC3NzaC2lZDI1NTE5ACAAIEJTQdFr7Xu59NGA/QPAnT8Ruvn30sPtz9FdpwZO/p3v [email protected]
[email protected]:~#

6. ssh config 형식의 쉘스크립트 작성

OpenWrt 에서 대상 호스트 ssh 접속 편의를 의해 쉘스크립트 작성

vi ~/ssh_myhost

#!/bin/sh

SSH_USER="root"
SSH_HOSTNAME="myhost.duckdns.org"
SSH_PORT="2222"
SSH_KEY="/etc/dropbear/dropbear_ed25519_myhost_key"

ssh -i ${SSH_KEY} -p ${SSH_PORT} ${SSH_USER}@${SSH_HOSTNAME}

7. 대상 호스트에 ssh접속

chmod 700 ~/ssh_myhost.sh
sh ~/ssh_myhost

[email protected]:~# uname -a
Linux home 5.4.154 #0 SMP Sun Oct 24 09:01:35 2021 armv7l GNU/Linux
[email protected]:~#
[email protected]:~# sh ./ssh_myhost.sh


BusyBox v1.33.2 (2022-02-16 20:29:10 UTC) built-in shell (ash)

  _______                     ________        __
 |       |.-----.-----.-----.|  |  |  |.----.|  |_
 |   -   ||  _  |  -__|     ||  |  |  ||   _||   _|
 |_______||   __|_____|__|__||________||__|  |____|
          |__| W I R E L E S S   F R E E D O M
 -----------------------------------------------------
 OpenWrt 21.02.2, r16495-bf0c965af0
 -----------------------------------------------------
[email protected]:~# uname -a
Linux OpenWrt 5.4.179 #0 SMP Wed Feb 16 20:29:10 2022 armv7l GNU/Linux
[email protected]:~#

참고

https://stackoverflow.com/questions/8223211/android-ssh-convert-puttygen-ppk-to-dropbear-key

Comments

No comments yet. Why don’t you start the discussion?

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

  −  1  =  2