- 개발 환경 : 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
'작업 일기' 카테고리의 다른 글
깃허브(GitHub) 입문 (0) | 2022.06.17 |
---|---|
라즈베리파이 전력 부족 문제 확인 방법 (0) | 2022.05.10 |
IntelliThings iAHRS RB-SDA-v1 (IMU 센서) ROS 패키지 (0) | 2022.04.19 |
ROS- PS4 Joystick teleop (0) | 2022.03.22 |
아두이노 Wheel encoder를 이용한 Navigation (0) | 2022.02.09 |