ㅤ
라즈베라파이, TOPST D3 에서 리눅스 개발을 할 때 사용했던 것처럼, VSCode에서 보드에 SSH로 접속해서 개발을 하고자 한다. 기본적인 설정 및 연결을 위한 방법들을 확인하는 과정과 해결 방법을 기록했다.
ㅤ
우선, 이렇게 하면 안되더라
[지금 LAN 케이블로 맥북과 비글본 블랙 보드를 연결해둔 상태이다. USB C to LAN 어댑터를 사용해줬다.]
그러면 아래처럼 설정 > 네트워크 탭에 ‘USB 10/100 LAN’와 ‘~_BeagleBone_Black’ 이라는 항목이 생긴다.

ㅤ
나는 이름만 보고서 BBB 보드의 이름을 가지고 있는 항목을 확인하고, 그 안에 IP 주소를 갖다가 SSH 연결에 사용하면 될거라 생각했다.

ㅤ
그래서 요 IP 주소를 내 username이랑 붙여서 연결을 시도했다.

ㅤ
물론 결과는 실패. Connection refused 로 로그가 찍혔다.

ㅤ
애초에 이 시점에 보드 쪽 터미널에서 ip addr show eth0 명령어를 입력했을 때, eth0에 IP 주소가 할당이 되어있지 않았다. 그래서 IP 주소 할당부터 하나씩 진행이 필요한 상황이였다.
보드와 SSH 연결하기
1. 맥북을 라우터로 쓸 수 있게 설정
맥북 자체가 원래 라우터가 아니기 때문에, 보드를 연결한다고 해서 자동으로 IP 주소를 할당해주지 않는다. 그런데 지금은 맥북과 보드를 연결해서 IP 주소를 할당할 필요가 있을 뿐더러, 외부 인터넷을 맥북을 통해 접근해야 하기 때문에 추가적인 설정이 필요하다.
ㅤ
설정 > 일반 > 공유 > 인터넷 공유를 확인한다. 인터넷 공유를 켜면 Mac이 Router의 역할을 하기 시작한다. 그러면 연결되는 장치에 대해 이때부터 자동으로 IP 주소를 할당해주는 역할을 수행할 수 있다. 그래서 이걸 켜준 다음 LAN을 꽂아야 자동으로 보드에게 IP 주소를 할당해주게 된다.
인터넷 공유 대상 기기에는 이 LAN을 연결했을 때 추가된 항목을 허용해준다.

2. IP 주소 확인하기
요걸 설정해서 공유를 켜준 다음에 ip addr show eth0 으로 보드가 가지고 있는 IP 주소를 확인해보면 아래처럼 192.168.2.3 이라는 IP 주소를 가지게 된 것을 확인할 수 있다. 오호.
ip addr show eth0
>>>
inet 192.168.2.3/24 metric 1024 brd 192.168.2.255 scope global dynamic eth0
valid_lft 3407sec preferred_lft 3407sec
3. username@IP_ADDRESS 로 SSH 접속하기
그 다음 ip 주소를 이용해서 SSH 접속을 시도하면 이렇게 보드에 SSH eth0 을 통해 연결할 수 있게 된다.
ㅤ
VSCode 에서 이거 연결을 시도하면 fingerprint 등록하는 부분이 위에 창으로 입력할 수 있게 나오는데, 그냥 엔터치면 안되고 ‘yes’ 라고 입력해줘야 한다. placeholder가 너무 짧게 나와서 이걸 해야한다는걸 놓치고 대가리를 박고 있었는데, 터미널에 나오는 로그에 보니 yes/no 입력을 무시했다고 적혀있어서 다시 입력해줬다.

여기까지 진행이 되었다면 보드를 껐다 켜더라도 (시리얼로 따로 들어가서 다시 살리고 자시고 하는 과정 없이) 바로 SSH 연결을 통해서 보드에 진입이 가능하다. 혹시 필요하다면 무선 랜카드를 꽂아서 원격으로 접속해서 개발 진행하는 것도 나쁘지 않을 듯?
ㅤ
왜 연결이 됐지..?
사실 이게 좀 의아했다. 윈도우에서 SSH 연결 설정을 위해서는 네트워크 설정에 들어가서 이 IP 주소를 보드에서 허용한 Gateway에 맞게 변경해줘야 했는데, 그런 부분들이 맥북에서는 필요 없는건가..? 그럴리가 없는데.... 라는 생각이 들었다. 그래서 왜 이게 연결이 된건지 좀 찾아봤다.
의아한건, 연결된 USB 포트의 IP 주소는 192.168.2.XX 가 아닌데, SSH 접속에 성공했다는 것.

실제로 보드 SSH 연결한 곳에서 이더넷의 설정값들을 확인해보면 IP 주소가 192.168.2.3으로 되어있음을 체크할 수 있다.

ㅤ
그리고 ip neighbor 명령어로 현재 보드에 연결된 장치들을 확인해보면 IP 주소가 192.168.2.1로 되어있다. 내 맥북은 169.254.xxx.xxx 으로 되어있는데…!

ㅤ
확인해보니 여기에 대해서는 실제 물리적인 주소와 가상의 주소(소프트웨어적인 주소)가 다르기 때문에 이렇게 나온다. 아래는 맥북의 터미널에서 보드로 가는 경로를 확인한 것이다. route 명령어를 사용해주었다.
sungmin@bagseongmin-ui-maegbug ~ % route get 192.168.2.3
route to: 192.168.2.3
destination: 192.168.2.3
interface: bridge100
flags: <UP,HOST,DONE,LLINFO,WASCLONED,IFSCOPE,IFREF>
recvpipe sendpipe ssthresh rtt,msec rttvar hopcount mtu expire
0 0 0 11 15 0 1500 1163
여기에서 알 수 있는 점은 interface로 bridge100 을 사용한다는 것.
ㅤ
ifconfig 명령어를 이용해서 맥북에 할당된 여러 연결 주소 등을 확인할 수 있는데, 그 중에서 bridge100의 정보가 실제로 있는지 grep을 해주면 아래와 같은 정보들을 체크할 수 있다.
sungmin@bagseongmin-ui-maegbug ~ % ifconfig | grep -A 3 "bridge"
bridge0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
options=63<RXCSUM,TXCSUM,TSO4,TSO6>
ether 36:66:ec:aa:75:c0
Configuration:
--
bridge100: flags=8a63<UP,BROADCAST,SMART,RUNNING,ALLMULTI,SIMPLEX,MULTICAST> mtu 1500
options=63<RXCSUM,TXCSUM,TSO4,TSO6>
ether fa:4d:89:38:1e:64
inet 192.168.2.1 netmask 0xffffff00 broadcast 192.168.2.255
inet6 fe80::f84d:89ff:fe38:1e64%bridge100 prefixlen 64 scopeid 0x1e
inet6 fd08:1d17:4400:8a8e:10bb:6c31:bb77:8c58 prefixlen 64 autoconf secured
Configuration:
id 0:0:0:0:0:0 priority 0 hellotime 0 fwddelay 0
좋아, bridge100에서 192.168.2.1 이라는 찾고있던 IP 주소를 확인할 수 있었다. bridge100을 통해서 이 보드로 연결되는구만.
ㅤ
조금 더 자세한 정보를 확인하고 싶다면 ifconfig 명령어에 바로 해당 인터페이스를 파라미터로 넘겨서 정보를 뽑아볼 수 있다. 아래 로그를 확인해보면 bridge100 의 member로 en25를 가지고 있는데, 이 en25 인터페이스에 대해서 ifconfig 로 정보를 확인해보면 IP 주소가 169.254.26.225로 되어있음을 확인할 수 있다. 이게 바로 USB 10/100 LAN 의 IP 주소!
sungmin@bagseongmin-ui-maegbug ~ % ifconfig **bridge100**
bridge100: flags=8a63<UP,BROADCAST,SMART,RUNNING,ALLMULTI,SIMPLEX,MULTICAST> mtu 1500
options=63<RXCSUM,TXCSUM,TSO4,TSO6>
ether fa:4d:89:38:1e:64
inet 192.168.2.1 netmask 0xffffff00 broadcast 192.168.2.255
inet6 fe80::f84d:89ff:fe38:1e64%bridge100 prefixlen 64 scopeid 0x1e
inet6 fd08:1d17:4400:8a8e:10bb:6c31:bb77:8c58 prefixlen 64 autoconf secured
Configuration:
id 0:0:0:0:0:0 priority 0 hellotime 0 fwddelay 0
maxage 0 holdcnt 0 proto stp maxaddr 100 timeout 1200
root id 0:0:0:0:0:0 priority 0 ifcost 0 port 0
ipfilter disabled flags 0x0
**member: en25 flags=3<LEARNING,DISCOVER>**
ifmaxaddr 0 port 29 priority 0 path cost 0
Address cache:
98:89:24:8b:61:6 Vlan1 en25 1200 flags=0<>
nd6 options=201<PERFORMNUD,DAD>
media: autoselect
status: active
sungmin@bagseongmin-ui-maegbug ~ % ifconfig **en25**
en25: flags=8b63<UP,BROADCAST,SMART,RUNNING,PROMISC,ALLMULTI,SIMPLEX,MULTICAST> mtu 1500
options=6464<VLAN_MTU,TSO4,TSO6,CHANNEL_IO,PARTIAL_CSUM,ZEROINVERT_CSUM>
ether 70:19:88:73:78:b2
inet6 fe80::2d:dd95:8b52:1a1c%en25 prefixlen 64 secured scopeid 0x1d
**inet 169.254.26.225** netmask 0xffff0000 broadcast 169.254.255.255
nd6 options=201<PERFORMNUD,DAD>
media: autoselect (100baseTX <full-duplex>)
status: active
ㅤ
즉, 네트워크에 물리적으로 잡혀있는 USB 10/100은 en25 (이더넷25) 임. 이걸 논리적인 네트워크로 한 번 감싼게 Bridge100. Bridge의 주요 역할은 하나의 물리 네트워크 연결이 여러 개의 통신 포트로 사용될 수 있도록 하는 것이다. 지금은 보드와의 연결 하나만 담당(192.168.2.1 을 168.254.26.225로 전환)하지만, 혹시 여러 연결을 처리하고자 한다면 Bridge를 통해 다른 IP도 연결이 가능하도록 한다.
이 덕분에 네트워크 설정에 있는 IP 주소와 게이트웨이가 보드에서 허용된 주소와 달랐어도 내부적으로 Bridge를 통해 처리가 되었기 때문에 정상적으로 연결이 가능했던 것.
ㅤ
자 이제 SSH로 접속까지 했으니, 여러 설정 값들 건드리기를 본격적으로 한 번 시도해보자!

'Embedded System > Embedded Linux' 카테고리의 다른 글
| [Embedded Linux] M1 Mac에서의 비글본 블랙 부팅하기 (0) | 2026.03.09 |
|---|---|
| [Embedded Linux] 독학용 리눅스 개발 보드 고르기, BeagleBone Black (1) | 2026.02.24 |
| [Embedded Linux] 디바이스 드라이버 작성해보기 (1) | 2025.11.29 |
| [Embedded Linux] Linux의 디바이스 트리 (0) | 2025.11.29 |
| [Embedded Linux] 프로세스간 통신 IPC - POSIX 기반의 IPC (1) | 2025.11.29 |