일요일, 4월 30, 2017

SSH로 라즈베리 파이와 통신하기


1. 개요
라즈베리 파이에 운영체제를 올리고 모니터를 따로 연결할 필요 없이, 간단한 설정만으로 SSH를 통해 라즈베리 파이에 접속할 수 있다. 이 글에서는 UART 통신, PuTTY를 통해 와이파이 환경에서 SSH로 라즈베리 파이3와 통신하는 방법을 살펴본다.

2. UART 통신
우선, 데스크톱과 통신을 할 수 있도록 UART가 필요하다. 다양한 제품 중에 PL2303 USB UART Board를 중심으로 설명하겠다.
이 UART를 라즈베리 파이와 연결할 때는 GND는 GND끼리, 그리고 TX와 RX는 서로 교차하여 연결해야 한다. VCC는 연결해주지 않아도 된다.
연결 후에 PL2303의 USB 단자를 데스크톱에 꽂고 라즈베리 파이에 전원을 공급한다. 그리고 PL2303 USB Driver를 아래의 링크에서 다운로드 받아 설치한다.

http://www.prolific.com.tw/US/ShowProduct.aspx?p_id=225&pcid=41

장치 관리자로 살펴보면, Prolific USB-to-Serial Comm Port(COMx)가 정상적으로 인식되는 것을 확인할 수 있다.
이제 PuTTY를 열고 시리얼 통신을 위한 환경설정을 진행한다. Connection type은 Serial로 설정하고, Serial line에는 장치관리자에서 확인한 포트(COMx)를 입력한다. 그리고 Speed는 115200으로 설정한다.
한글을 쓸 일이 있다면, 왼쪽 Category에서 Window-Translation에 들어가서 Remote character set을 UTF-8로 설정해준다.

모든 설정을 마친 뒤 Open을 누르면 라즈베리 파이3의 터미널 환경을 만날 수 있다. 초기 상태의 로그인 계정 정보는 다음과 같다.
id: pi
pw: raspberry

3. 와이파이 통신
라즈베리 파이는 UART를 통해 데스크톱과 연결되어 있지만, 인터넷에는 연결이 되어있지 않은 상태이다. 따라서 사용중인 와이파이에 라즈베리 파이를 연결한다.

라즈베리 파이의 터미널 창에서 네트워크 통신 관련 설정 파일을 연다.
sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
그러면 nano라는 텍스트 편집기가 실행되면서 해당 파일을 수정할 수 있는 상태가 된다. 자신이 사용중인 와이파이의 이름과 비밀번호를 포함한 정보들을 입력하여 라즈베리 파이를 와이파이에 연결한다.
country=GB
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
ap_scan=1
network={
        ssid="와이파이 이름"
        psk="와이파이 비밀번호"
}
모두 기입한 뒤에는 Ctrl + x, y, 엔터를 순서대로 눌러서 빠져나온다. 그 다음 절전모드를 비활성화 하고, 무선 네트워크 인터페이스를 재시작한다.
sudo iwconfig wlan0 power off
sudo ifdown wlan0
sudo ifup wlan0
그리고 ifconfig wlan0 명령어를 입력했을 때 IP 주소가 제대로 출력된다면 성공적으로 연결이 된 것이다.

4. SSH 통신
와이파이 연결까지 마쳤다면, 더이상 PL2303 모듈은 더이상 필요없다. 연결을 해제하고 데스크톱을 통해 원격으로 라즈베리 파이를 제어해보자.
우선, 데스크톱도 라즈베리 파이가 연결된 와이파이에 연결이 되어 있어야 한다. 같은 네트워크 안에 데스크톱과 라즈베리 파이가 연결되어 있다면, 데스크톱의 터미널에서 라즈베리 파이의 IP 주소로 ping을 날릴 경우 통신이 잘 되는 것을 확인할 수 있다.

이제 남은 것은 PuTTY로 라즈베리 파이에 접속하는 것이다. 아까 시리얼 통신을 설정했던 PuTTY 창에서 Host Name을 라즈베리 파이의 IP 주소로 설정하고 포트 번호는 22번, Connection Type은 SSH로 설정한 뒤 연결하면 된다.
그런데, 라즈베리 파이 측에서 Default로 SSH를 사용하지 않도록 막아두었기 때문에 처음 설정을 하는 사람들은 오류 메시지를 만나게 된다.

이 문제를 해결하기 위해서 확장자가 없는 ssh라는 빈 파일을 생성하여 라즈베리 파이의 SD 카드에 넣어주면 된다.
이 파일을 SD 카드의 루트 디렉터리에 넣은 뒤 다시 SD 카드를 라즈베리 파이에 장착하고, 재부팅을 한 뒤 PuTTY로 연결을 시도하면, 오류 없이 SSH 통신이 가능하다.

댓글 없음:

댓글 쓰기