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