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 [보낼 파일] [원격 머신 계정 아이디]@[원격 머신 주소]:[파일 받을 경로]
'Research > OpenWRT' 카테고리의 다른 글
라즈베리파이2B (Raspberry Pi 2 Type B)에 OpenWRT 설치 후 USB 무선네트워크 사용하기 (7) | 2015.10.08 |
---|---|
OpenWRT - TFTP를 이용한 설치(flashing), Buffalo WZR-600DHP (0) | 2015.04.22 |
OpenWRT - DHCP 주소 할당이 안될 때의 확인사항 (0) | 2015.04.20 |
OpenWRT - LuCI 설치가 안되거나 찾을 수 없는 경우 (1) | 2015.04.14 |
Ubuntu(우분투) PC에 OpenWRT 개발 환경(크로스 컴파일) 설치 (6) | 2014.02.23 |