
inboudn and outbound
- inbound 연결
- 외부에서 내부로 들어오는 네트워크 연결
- 예: 외부 PC가 대상 장비의
22번 포트(SSH)로 접속
- Outbound 연결
- 내부에서 외부로 나가는 네트워크 연결
- 예: 대상 장비가 외부 웹사이트로 HTTPS 요청을 보냄
일반적인 SSH 연결을 위한 필요한 조건
전통적인 SSH 접속은 다음 조건을 전제로 함:
- SSH로 접속하고자 하는 서버가 inbound TCP 연결을 허용
- 해당 서버의 방화벽에서
22/tcp포트가 open된 상태. - 외부 클라이언트가 해당 서버로 직접 접속
외부 클라이언트 ──(inbound TCP 22)──▶ 서버
Colab의 경우,
- colab 런타임이 있는 장비가 "서버"에 해당
- 브라우저로 Colab에 접속한 장비가 "외부 클라이언트"에 해당.
Google Colab의 네트워크 특성
Colab 런타임은
- 인바운드 연결: 차단
- 아웃바운드 연결: 허용
즉,
- 외부에서 Colab으로 들어올 수는 없고
- Colab에서 외부로 나가는 것만 가능
이 때문에 일반적인 방식의 SSH 로 접속은 불가 함.
cloudflared 를 통해 우회 접속
cloudflared 는 다음을 통해 SSH 접속을 가능하게 함.
- Colab 내부에서
cloudflared실행 cloudflared가 Cloudflare 네트워크로 아웃바운드 연결 생성- Cloudflare 네트워크가 그 연결을 터널로 유지
- 외부 클라이언트 요청을
- 이미 열려 있는 아웃바운드 터널을 통해 내부로 전달
구조적으로 보면:
[외부 클라이언트]
↓
Cloudflare
↓ (이미 생성된 아웃바운드 터널)
cloudflared
↓
Colab 내부 SSH 서버
여기서 중요한 점은:
- Colab 쪽에서는 인바운드 연결이 한 번도 발생하지 않음
- 모든 연결은 아웃바운드로 시작됨
Colab 런타임에서 cloudflared 실행하기.
다음을 colab의 code cell에서 실행.
!pip install -U colab_ssh
from colab_ssh import launch_ssh_cloudflared, init_git_cloudflared
launch_ssh_cloudflared(password="원하는패스워드")
실행이 완료되면 Cloudflare를 통해 생성된 터널에 접속하기 위한 호스트명이 출력됨.
- 예 :
afterwards-figures-mortgage-suits.trycloudflare.com
이 호스트명을 통해 일반적인 ssh에서의 host 명으로 사용하면 됨.
SSH 명령어에서 cloudflare 네트워크에 접속하기
우선 cloudflared가 설치 되어 있어야 함.
macOS (Homebrew)
brew install cloudflared
cloudflared --version
Linux (Debian apt)
sudo apt-get update
sudo apt-get install -y cloudflared
cloudflared --version
Windows (winget)
winget install --id Cloudflare.cloudflared -e
cloudflared --version
SSH 클라이언트 통한 접속.
다음과 같이 -o 옵션을 이용.
ssh -o ProxyCommand="cloudflared access ssh --hostname %h" user@host
- colab에서
user는root임. host는 앞서 실행결과로 나온 host명을 사용하면 됨:afterwards-figures-mortgage-suits.trycloudflare.com
이를 다시 한번 더 인바운드/아웃바운드 관점에서 정리하면:
- SSH는 원래 인바운드 TCP 연결을 시도해야 하지만
- 대신 cloudflared를 실행
- cloudflared가 이미 만들어 둔 아웃바운드 터널을 사용
- 그 터널을 통해 SSH 트래픽을 전달
즉,
인바운드가 불가능한 환경을
아웃바운드 기반 구조로 우회
같이보면 좋은 자료들
2025.08.05 - [utils] - ssh 사용 방법
ssh 사용 방법
SSH는 Secure SHell의 약자로 암호화된 보안 연결을 통해 원격 서버에 안전하게 접속하고 명령을 실행할 수 있게 해주는 네트워크 프로토콜 및 이를 사용하는 클라이언트 및 앱을 가리킴.Secure SHell의
ds31x.tistory.com
2023.12.27 - [utils/git and github] - [ssh-keygen] ssh 관련 private key와 public key 생성하기.
[ssh-keygen] ssh 관련 private key와 public key 생성하기.
ssh (secure shell)ssh는 secure shell의 약자로 네트워크 상에서 암호화된 통신을 위한 프로토콜 (및 이를 구현한 프로그램)을 가르킴. 주로 원격지의 장비에 보안이 보장된 접속을 제공하며 이를 위해
ds31x.tistory.com
'개발환경' 카테고리의 다른 글
| npm install 과 npm ci 의 차이 (0) | 2026.01.27 |
|---|---|
| Emacs vs vi 단축키 비교 (주요내용) (0) | 2026.01.07 |
| Gemini CLI 설치 가이드 (Homebrew 이용) (0) | 2025.12.26 |
| Visual Studio vs. VS Code (3) | 2025.08.12 |
| [CE] WSL 완전제거하기 (MSI버전으로 설치시) (0) | 2025.03.06 |