2주차 ‐ 원격 개발 환경 - Jhyemin06/Embedded-System_2026 GitHub Wiki
원격개발환경
원격개발환경이란?
-
원격개발환경(RDE, Remote Development Environment): 개발자가 원격으로 개발 환경에 접근하고 작업할 수 있도록 지원하는 플렛폼
⇒ 클라우드 또는 원격 서버에서 실행되는 개발 환경
작업 흐름: 원격 개발 구조(20분) ⇒ Linux, SSH 실습(35분) ⇒ VS Code,venv(30분) ⇒ GitHUb 통합 실습(35분)
노트북과 Raspberry Pi의 역할 분
노트북(로컬)
- 표시 및 입력 장치로 동작하며 화면과 입력을 노트북이 당담함.
- 사용자는 VS Code UI 편집기, 키보드/마우스 입력, 웹 브라우저 동작을 담당함.
Raspberry Pi
- 실제 파일과 환경을 제공하며 VScode server가 동작할 수 있도록 함.
- 프로젝트 파일 저장, Linux 셸 명령 처리, Python 프로그램 실행, GPIO 및 센서 하드웨어 제어를 담당함.
RDE에서는 '화면과 입력'은 노트북에서, '파일과 실행'은 Raspberry Pid에서 위치하도록 역할 분담을 한다.
원격개발구조
원격개발은 화면과 실행 환경을 네트워크로 연결한다.
- 직접 연결: Raspberry Pi에 모니터,키보드,마우스를 연결해 작업
- 원격 연결: 노트북의 화면과 키보드로 Raspberry Pi를 조작
- 현장 방식: 설치된 장치를 이동하지 않고 시스템을 관리
Raspberry Pi 네트워크 연결하는 4가지 방식
| 구분 | 장점 | 주의사항 |
|---|---|---|
| 1. 유선 LAN | 장점: 안정적 | 주의: 배선필요 |
| 2. 무선 공유기 | 장점: 일반적으로 사용 | 주의: 공유기 정책 |
| 3. 노트북 핫스팟(수업 권장) | 장점: 독립 실습망 | 주의: 절전 주의 |
| 4. 스마트폰 핫스판(임시대안) | 장점: 이동 편리성 | 주의: 데이터 발열 |
원격 개발은 IP 주소와 포트로 목적지를 찾는다.
- IP 주소: 네트워크에서 Raspberry Pi 라는 컴퓨터를 식별함.
- 포트: 그 컴퓨터 안의 SSH 서비스를 식별하며 기본값은 TCP 22 임.
- 사용자·인증: 어떤 계정으로 접속할지 와 비밀번호 또는 키를 확인함.
Linux 기본 명령어 & SSH 접속
Linux OS 기반의 라즈베리 파이를 제어하려면 기본적인 터미널 탐색 명령과 암호화 네트워크 프로토콜인 SSH(Secure Shell) 접속 방식을 숙지해야 합니다.
🔹 필수 탐색 및 관리 명령 pwd: 현재 작업 중인 디렉터리의 절대 경로를 출력합니다.
ls -la: 숨김 파일(.venv, .gitignore 등)과 파일 접근 권한을 포함한 전체 목록을 상세히 조회합니다.
mkdir -p ~/projects/week02: 실습용 상위/하위 디렉터리를 한 번에 안전하게 생성합니다.
rm: 파일이나 디렉터리를 삭제합니다. Linux에서는 휴지통을 거치지 않고 즉시 삭제되므로 실행 전 현재 경로(pwd)와 대상을 반드시 확인해야 합니다.
현재 위치와 파일 목록 확인
pwd
ls
ls -l
ls -la
#홈 데렉터리로 이동
cd ~
#프로젝트 폴더 생성과 이동
mkdir -p ~/projects/week02
cd ~/projects/week02
pwd
파일 생성,복사,이동,삭제는 대상을 확인한 뒤 수행
touch hello.py
cp hello.py hello_backup.py
mv hello_backup.py backup.py
cat hello.py
#삭제 전 다시 확인
ls -lbackup.py
rm backup.py
#작은 Python 프로그램으로 실행위치를 확인
#system_info.py
import platform
import socket
from datetime import datetime
print("호스트:",soket.gethostname())
print("운영체제:",platform.system())
print("CPU:", datetime.now().isoformat(
timespec="seconds"
))
#실행
python3 system_info.py
sudo 시스템
sudo 시스템, 필요성과 핵심 역할
Linux OS 기반의 라즈베리 파이 시스템에서는 보안과 안전성을 위해 일반 사용자 권한과 최고 관리자(root) 권한이 엄격하게 분리되어 있습니다.
root 계정 접속의 위험성: 최고 관리자(root) 계정으로 직접 로그인해 지속적으로 작업하면, 실수로 한 번 잘못 내린 명령(rm -rf / 등)이 운영체제 전체를 파괴할 수 있습니다.
sudo를 통한 일시적 권한 위임: 일반 계정(student 등) 상태를 유지하면서 필요한 단일 명령에 대해서만 관리자 권한을 부여받아 안전하게 수행합니다.
권한에 따른 작업
| 구분 | 내용 / 작업 유형 | 주요 원칙 및 주의사항 |
|---|---|---|
| 1. 일반 작업 | 홈 디렉터리(~) 내 파일 편집, 일반 Python 프로그램 실행 및 가상환경(.venv) 동작 |
sudo 사용 불필요 (일반 사용자 권한으로 수행) |
| 2. 시스템 변경 | 패키지 설치/업데이트(apt), 시스템 서비스 관리(systemctl), 네트워크 설정 변경 |
필요 시 제한적으로 sudo 권한 사용 |
| 3. 안전 원칙 | 인터넷에서 복사한 명령어 또는 의미를 정확히 이해하지 못한 명령어 실행 | 내용 검토 없이 sudo로 무분별하게 실행하지 않음 |
안전 원칙
- 상시 사용 금지: 홈 디렉터리 내에서 코드를 작성하거나 Python 프로그램을 실행할 때는 절대로 sudo를 붙이지 않습니다. (sudo로 실행 시 파일 소유권이 root로 변경되어 일반 권한으로 수정 불가능해질 수 있음)
- 명령어 이해 후 실행: 인터넷이나 블로그에서 복사한 명령어를 의미를 이해하지 않은 상태에서 sudo 권한으로 함부로 실행하지 않습니다.
- 최소 권한의 법: 시스템 패키지 설치나 H/W 및 네트워크 서비스 제어 등 시스템 변경이 꼭 필요한 시점에만 제한적으로 사용합니다.
무선 연결 ≠ SSH 연결
DHCP·고정 IP·mDNS는 장치를 찾는 방법이 다르다
노트북 핫스판으로 독립된 Raspberry Pi 실습망 만들기
- 전체 과정
- 설정 : 시작메뉴 ⇒ 설정 클릭
- 네트워크 및 인터넷 : 설정 ⇒ '네트워크 및 인터넷' 클릭
- 모바일 핫스팟: 왼쪽 메뉴 ⇒ '모바일 핫스팟' 클릭
- SSID 암호 설정: 핫스팟을 '켬'으로 설정 ⇒ SSID(네트워크 이름)와 암호 설정 5.연결 안정성을 위해: 가능하면 2.4GHz 대역을 권장 및 설정
- IP확인 및 접속: Raspberry Pi를 핫스파에 연결 ⇒ IP확인 및 SSH로 접속
명령어 예시: ssh student용
- 주의사항
- 절전 시 중단 ⇒ 노트북 절전모드 설정시 핫스판 중단될 수 있음.
- IP 변경 가능 ⇒ 핫스팟 재시작 시 IP 변경될 수 있으니, 재확인 후 접속.
- 팀별 SSID 구분 ⇒ 여러 팀이 사용할 경우, SSID를 팀별로 다르게 설정해야 함.
Raspberry Pi의 주소와 네트워크 연결을 확인하기
# Raspberry Pi에서
hostname -I
ip addr show wlan0 //IP는 네트워크가 바뀌면 달라질 수 있음.
# 노트북에서
ping 192.168.0.25 //ping은 기본연결을, ss는 서비스 대기 상태를 확인함.
# Raspberry Pi에서 SSH 상태 확인
systemctl status ssh
ss -ltnp | grep :22
//같은 네트워크와 정확한 주소가 필요함.
암호화된 연결로 Raspberry Pi의 원격 셸을 연다.
사용자 이름과 IP 주소로 SSH에 접속하기
# 노트북 터미널 //처음 접속할 때 호스트 키와 대상 IP를 확인.
ssh [email protected]
# 접속 후 실행 위치 확인 //프롬포트의 사용자 호스트 이름을 확인.
hostname
whoami
pwd
hostname -I
# 원격 연결 종료 //exit 후 노트북 프롬프트로 돌아왔는지 확인.
exit