본문 바로가기
목차
개발환경

아웃바운드 터널을 이용한 SSH 접속: Colab과 cloudflared 사례

by ds31x 2026. 1. 5.
728x90
반응형

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 접속을 가능하게 함.

  1. Colab 내부에서 cloudflared 실행
  2. cloudflared가 Cloudflare 네트워크로 아웃바운드 연결 생성
  3. Cloudflare 네트워크가 그 연결을 터널로 유지
  4. 외부 클라이언트 요청을
  5. 이미 열려 있는 아웃바운드 터널을 통해 내부로 전달

구조적으로 보면:

[외부 클라이언트]
        ↓
   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에서 userroot 임.
  • 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

 

728x90