본문 바로가기

작업 일기

원격 제어

- 개발 환경 : Rasberry Pi 4B (Ubuntu 18.04 / ROS melodic)

- 준비물 : remote PC

- 참조 :  https://jmoon.co.kr/183 (ssh)

            https://perlubantuan.com/ssh-error-invalid-format-ubuntu-18-04/ (ssh error)

            https://phoenixnap.com/kb/ssh-connection-refused (ssh error)

            https://digital-play.tistory.com/26 (xrdp)

            https://blog.naver.com/zzang0736/memo/222699553743 (vnc)

            http://dveamer.github.io/ubuntu/RemoteUbuntu.html (vnc)

            https://velog.io/@seongwon97/Ubuntu-mate-VNC%EC%84%A4%EC%A0%95%ED%95%98%EA%B8%B0 (vnc)

            https://shanepark.tistory.com/245 (vnc) *

            
           

 

※ 원격 접속하기 위해서는 remote PC와 라즈베리파이가 같은 와이파이(인터넷 없어도 됨)에 연결되어 있어야 합니다.

 

 

1. SSH

- SSH는 Secure Shell의 줄임말로, 원격 호스트에 접속하기 위해 사용되는 보안 프로토콜

$ sudo apt-get update

$ sudo apt-get install openssh-server
$ sudo apt-get install ssh

$ sudo ufw enable
$ sudo ufw allow 22
$ sudo ufw reload

$ sudo service ssh start
$ sudo service ssh status
$ sudo ps -ef | grep sshd
$ sudo netstat -ntlp | grep sshd

- remote PC에서 ssh 연결

$ ssh -Y {user}@{IP}
$ ssh -Y ubuntu@192.168.0.8

- error 발생 시

더보기

- connection closed by ip주소 port22 에러 발생 시

$ sudo service ssh status
sshd error: invalid format 에러 확인
키가 없어서 발생한 문제이므로 키를 재생성

$ ssh-keygen -A
$ systemctl restart sshd

remote PC에서 ssh 연결
$ ssh -Y user@hostname

host key verification failed
$ ssh -v user@hostname

 

 

 

 

2. XRDP

- XRDP란, 원격 데스크톱 프로토콜로서 다른 컴퓨터에 GUI를 제공하는 프로토콜

 

- XRDP 설치 및 방화벽 열기

$ sudo apt-get install xrdp
$ sudo apt-get update
$ sudo apt-get install mate-core mate-desktop-environment mate-notification-daemon

$ sudo ufw allow 3389/tcp
$ sudo ufw allow 22/tcp

- 공유기로 포트포워딩 설정
공유기로 ip를 외부에 공개토록 설정하고, 포트포워딩 설정을 해줘야합니다. 포트번호 3389로 설정해서 열어줍니다.
고급설정 - 네트워크관리 - DHCP 서버 설정
현재 접속중인 데스크탑(서버)컴퓨터를 DHCP 서버 주소관리 명단에 등록
고급설정 - NAT/라우터 관리 - 포트포워드 설정
- ssh용
현재 접속된 ip주소 체크 후 프로토콜은 TCP, 외부포트 및 내부 포트는 22~22로 통일 후 적용
- xrdp용
현재 접속된 ip주소 체크 후 프로토콜은 TCP, 외부 포트 및 내부 포트는 3389~3389로 통일 후 적용

 

- 라즈베리파이를 동작 (전원만 넣고 로그인은 하지 않습니다. 로그인 하면 충돌나서 튕김)

 

- 원격 데스트톱 연결 실행

윈도우 + R
mstsc 입력

- ip와 포트번호 입력

ip주소:포트번호
192.168.0.8:3389

 

 

 

3. VNC

- VNC란, 컴퓨터 환경에서 RFB 프로토콜을 이용하여 원격으로 다른 컴퓨터를 제어하는 그래픽 데스크톱 공유 시스템

 

1. Chrome VNC Viewer 설치

- 아래 링크에서 첨부파일 다운로드 및 Zip파일 압축해제
https://blog.naver.com/zzang0736/memo/222699553743


- 구글 확장 프로그램(chrome://extensions/)에서 '압축해제된 확장 프로그램 로드' 클릭 후 압축 해제한 폴더 선택 및 등록

 

2. 라즈베리파이 remote-access

http://dveamer.github.io/ubuntu/RemoteUbuntu.html

 

- Desktop Share에서 접속 허용

$ sudo apt-get install dconf-tools //ubuntu 18.04
$ sudo apt-get install dconf-editor //ubuntu 20.04
$ dconf-editor
org > gnome > desktop > remote-access
require-encryption 해제

- 우분투 Setting -> Sharing -> Screen Sharing -> on

 

3. Chrome VNC Viewer 실행
- 구글 앱스(chrome://apps)에서 Chrome VNC Viewer 클릭하여 실행


- 원격할 PC의 ip주소:포트번호 입력

  192.168.0.8:5900

 

4. Ubuntu-ubuntu 간 VNC 원격 제어

https://shanepark.tistory.com/245

 

- Window에서는 Chorme VNC Viewer를 사용했다면, Ubuntu에서는 remmina를 이용하여 VNC 원격 제어가 가능합니다.

  보통 기본적으로 설치되어 있겠지만, 만약 설치되어있지 않다면 아래의 코드를 입력하여 다운로드해줍니다.

$ sudo apt install remmina

 

- remmina를 실행한 뒤, VNC으로 변경 및 접속할 아이피 주소를 입력하여 접속합니다.

 

 

 

* 참고: Ubuntu VNC 서버 설치하는 법

  (위의 접속 방법에서 필수 사항은 아님)

더보기

https://velog.io/@seongwon97/Ubuntu-mate-VNC%EC%84%A4%EC%A0%95%ED%95%98%EA%B8%B0

 

$ sudo apt-get update
$ sudo apt-get install tightvncserver
$ vncserver
$ 비밀번호 설정
$ n
$ sudo nano ~/.vnc/xstartup
#X-window-manager & 앞에 #제거

$ sudo nano /etc/init.d/tightvnc

- tightvnc 파일 안에 아래와 같이 입력

#!/bin/bash
### BEGIN INIT INFO
# Provides:          vncserver
# Required-Start:    networking
# Required-Stop:     networking
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
### END INIT INFO
 
PATH="$PATH:/usr/bin/"
export USER="ubuntu{유저 이름}"
 
DISPLAY="1"
DEPTH="16"
GEOMETRY="1280x800{원하는 해상도}"
 
OPTIONS="-depth ${DEPTH} -geometry ${GEOMETRY} :${DISPLAY}"
 
. /lib/lsb/init-functions
 
case "$1" in
start)
log_action_begin_msg "Starting vncserver for user '${USER}' on localhost:${DISPLAY}"
su ${USER} -c "/usr/bin/vncserver ${OPTIONS}"
;;
 
stop)
log_action_begin_msg "Stoping vncserver for user '${USER}' on localhost:${DISPLAY}"
su ${USER} -c "/usr/bin/vncserver -kill :${DISPLAY}"
;;
 
restart)
$0 stop
$0 start
;;
esac
exit 0
$ sudo chmod +x /etc/init.d/tightvnc 
$ sudo update-rc.d tightvnc defaults 
$ init 6