반응형

OpenWRT version: 14.07 (Barrier Breaker)

Tested device: Buffalo WZR-600DHP

외부 머신: Ubuntu 12.04 (64-bit)


*목적: 인터넷에 접속할 수 있는 OpenWRT 라우터에서 특정 리눅스 머신에 SSH 또는 SCP를 사용할 때, 비밀번호 입력 절차 없이 자동으로 인증되도록 하고 싶다.


일반적으로 리눅스에서 쓰는 잘 알려진 방법을 활용하면 (openssh를 쓴다는 가정 하에):

1. OpenWRT 기기에서 ssh-keygen 도구를 이용하여 RSA key를 생성하고,

2. OpenWRT에는 private key 파일을 보관하고,

3. 접속할 원격 머신에는 public key 파일을 $HOME/.ssh/authorized_keys 파일에 추가한다.

(참고: OpenTutorials에 있는 egoing님의 글: SSH Key - 비밀번호 없이 로그인)


그런데 위와 같이 하고 아래와 같이 RSA key를 이용한 로그인을 시도하면 에러가 뜬다.

root@OpenWrt:~# ssh -i /root/.ssh/id_rsa [원격 머신 계정 아이디]@[원격 머신 주소]

ssh: Exited: String too long

root@OpenWrt:~# 


이 경우 일반적인 ssh-keygen 대신 dropbearkey를 활용해야 한다.

(참고: https://forum.openwrt.org/viewtopic.php?id=14148)


root@OpenWrt:~# dropbearkey -t rsa -f /root/.ssh/id_rsa

Generating key, this may take a while...

Public key portion is:

ssh-rsa AAAAB3NzaC1yc2EAAADAQAB...(중략) root@OpenWrt

Fingerprint: md5 7e:aa:9b:...(생략)


위의 화면에서 "ssh-rsa ..."로 시작하는 내용은 public key이므로 복사해서 따로 파일로 저장해 두자. (예: id_rsa.pub) dropbearkey에서는 ssh-keygen과는 달리 화면상에 출력만 하고 별도로 .pub 파일로 저장하지 않는다. 그리고 이 내용을 원격 머신의 $HOME/.ssh/authorized_keys 파일에 추가해야 한다.


참고로 dropbearkey를 생성하기 전에 이미 같은 위치에 id_rsa 파일이 있으면 덮어쓰기가 안되므로, 새로 만들 파일 이름을 다르게 하거나, 기존의 id_rsa 파일을 지우도록 하자. (어차피 OpenWRT 기기에서 쓸 수 없으니까 지워도 무방함. 정 필요하면 나중에 ssh-keygen으로 다시 만들면 된다.)


이제 dropbearkey로 새로 만든 private key를 사용해서 비밀번호 입력 없이 SSH, SCP에 접속할 수 있다.


root@OpenWrt:~# scp -i /root/.ssh/id_rsa [보낼 파일] [원격 머신 계정 아이디]@[원격 머신 주소]:[파일 받을 경로]



반응형
블로그 이미지

Bryan_

,