iPad로 운영서버 SSH 원격 실행해 접속하기

궁금하면 500원·2025년 6월 4일

데브옵스

목록 보기
36/37

iPad에서 SSH 원격 접속 완벽 가이드

iPad에서 내 물리 서버로 SSH 접속하기 위한 단계별 설정 방법과 보안 강화 팁, 그리고 접속이 어려운 경우의 대안까지 상세하게 설명합니다.
집에서 서버에 안전하게 접속하여 작업 효율을 높여보세요!

🎯 전체 구조 이해하기

집에 있는 iPad에서 내부 네트워크에 있는 물리 서버로 SSH 접속을 하려면, 네트워크의 라우터를 통해 서버로 연결되는 통로를 만들어야 합니다.
이 과정은 크게 서버 설정, 라우터 설정, 그리고 iPad에서의 접속 세 가지로 나뉩니다.

1단계: 서버 고정 IP 설정

서버의 내부 IP 주소가 변경되지 않도록 고정 IP를 할당하는 것이 중요합니다.
여기서는 서버 자체에 정적 IP를 설정하는 방법을 안내합니다.

1.1. 현재 네트워크 인터페이스 확인

서버에서 네트워크 인터페이스 이름을 확인합니다.
보통 en으로 시작하는 이름(예: ens33, enp0s3)을 사용합니다.
다음 명령어 중 하나를 사용하세요.

ip addr
# 또는
ifconfig
# 또는
ls /sys/class/net

1.2. Netplan 설정 파일 편집

Ubuntu 서버의 경우, Netplan을 사용하여 네트워크 설정을 관리합니다.
설정 파일 목록을 확인합니다.

ls /etc/netplan/

일반적으로 00-installer-config.yaml 또는 01-network-manager-all.yaml과 같은 이름의 파일이 존재합니다.
해당 파일을 편집합니다.

sudo nano /etc/netplan/00-installer-config.yaml # 또는 해당 파일명

1.3. 고정 IP 설정 적용

기존 DHCP 설정을 고정 IP로 변경합니다.
YAML 파일은 들여쓰기(indentation)가 매우 중요합니다.
반드시 스페이스 2칸씩 들여쓰기를 사용하고 탭(Tab)은 사용하지 마세요.

network:
  version: 2
  renderer: networkd
  ethernets:
    ens33:  # <-- **네트워크 인터페이스 이름**을 실제 서버의 이름으로 변경하세요!
      dhcp4: no
      dhcp6: no
      addresses:
        - 192.168.1.122/24  # <-- **원하는 서버의 고정 IP 주소/서브넷 마스크**로 변경하세요!
      routes:
        - to: default
          via: 192.168.1.1   # <-- **게이트웨이 주소 (라우터 IP)**로 변경하세요!
          metric: 100
      nameservers:
        addresses:
          - 192.168.1.1      # <-- **DNS 서버 (보통 라우터 IP)**로 변경하세요!
          - 8.8.8.8          # Google DNS (백업)
          - 8.8.4.4
        search:
          - local.domain
      optional: false  # 부팅 시 이 인터페이스를 반드시 활성화

설정 파라미터 설명:

  • ens33: 실제 네트워크 인터페이스 이름입니다.
    반드시 서버의 실제 인터페이스명으로 변경해야 합니다.

  • dhcp4: no: IPv4 DHCP 자동 할당을 비활성화합니다.

  • addresses: 할당할 고정 IP 주소와 서브넷 마스크를
    CIDR 표기법(예: 192.168.1.122/24)으로 지정합니다.

  • routes: 네트워크 라우팅 설정으로, 기본 게이트웨이(via)를 지정합니다.
    이 게이트웨이 주소는 회사 네트워크 라우터의 내부 IP 주소입니다.

  • nameservers: DNS 서버 주소를 설정합니다.
    첫 번째 주소는 보통 라우터의 IP 주소를 사용하고,
    백업으로 Google DNS(8.8.8.8, 8.8.4.4)를 추가하는 것이 일반적입니다.

  • optional: false: 시스템 부팅 시 이 네트워크 인터페이스를 반드시 활성화하도록 설정합니다.

1.4. 설정 적용 및 확인

설정 파일을 저장한 후, 변경 사항을 적용하고 확인합니다.

sudo netplan try # 설정 파일 문법 검사 및 임시 적용
# WARNING: "too open" 경고가 뜰 수 있으나, 일반적으로 문제는 없습니다.
sudo netplan apply # 설정 적용

ip addr show # IP 주소 확인 (변경사항 반영 확인)
ping -c 4 8.8.8.8 # 네트워크 연결 테스트

2단계: 라우터에서 포트 포워딩 설정

회사 네트워크 라우터의 관리자 패널에 접속하여 포트 포워딩 규칙을 추가해야 합니다.
라우터 관리자 패널은 보통 웹 브라우저에서 http://192.168.1.1/ 또는
http://192.168.0.1/ 등의 주소로 접속할 수 있습니다.
회사 네트워크 환경에 맞는 주소를 확인하세요.

관리자 패널 접속 후, "포트 포워딩(Port Forwarding)", "가상 서버(Virtual Server)",
또는 "NAT 설정" 등의 메뉴에서 다음 규칙을 추가합니다.

  • 외부 포트 (External Port / Public Port): 2222 (보안을 위해 기본 SSH 포트인 22 대신 다른 포트 사용을 강력히 권장합니다.
    기억하기 쉬운 임의의 숫자로 설정하세요.)

  • 내부 IP (Internal IP / Private IP): 서버의 고정 사설 IP 주소 (예: 192.168.1.122)

  • 내부 포트 (Internal Port / Private Port): 22 (서버의 실제 SSH 포트)

  • 프로토콜 (Protocol): TCP

  • 예시 규칙: 외부에서 라우터의 공인 IP 주소 121.141.19.193의 2222번 포트로 접속하면, 내부 네트워크의 192.168.1.122 서버의 22번 포트로 연결됩니다.

3단계: 서버 보안 규칙 강화

포트 포워딩을 통해 외부 접속 경로가 열렸으므로, 서버 자체의 보안을 강화하는 것이 매우 중요합니다.

3.1. SSH 설정 파일 편집

SSH 서비스 설정을 변경하여 보안을 강화합니다.

sudo nano /etc/ssh/sshd_config

다음 권장 설정을 찾아 변경하거나 추가합니다.

Port 22                       # 서버 내부에서 사용하는 SSH 포트는 22번입니다.
                              # 외부에서는 포트 포워딩으로 2222 -> 22 로 매핑됩니다.
PermitRootLogin no            # 루트(root) 계정의 직접 SSH 접속을 금지합니다.
PasswordAuthentication no     # <-- **SSH 키 인증을 사용할 경우에만 'yes'에서 'no'로 변경하세요!**
                              # 패스워드 인증을 비활성화하여 무차별 대입 공격을 막습니다.
AllowUsers your_username      # <-- **[your_username] 부분을 실제 접속할 사용자 이름으로 변경하세요!**
                              # 특정 사용자만 SSH 접속을 허용합니다. (매우 중요)

변경 후 SSH 서비스를 재시작하여 설정을 적용합니다.

sudo systemctl restart sshd

3.2. UFW(방화벽) 활성화 및 설정

UFW(Uncomplicated Firewall)는 Ubuntu에서 사용하기 쉬운 방화벽 관리 도구입니다.
이를 활성화하고 SSH 포트만 허용하도록 설정합니다.

sudo ufw enable       # UFW 방화벽 활성화
sudo ufw allow 22/tcp # SSH 기본 포트(22) 허용
# 외부에서 포트 포워딩으로 사용할 비표준 포트(예: 2222)는 UFW에서 따로 열 필요가 없습니다.
# 라우터에서 2222 -> 22로 변환되어 들어오기 때문에 서버 입장에서는 22번 포트로 들어오는 연결입니다.

sudo ufw status verbose # 방화벽 상태 확인

UFW 활성화 전 반드시 SSH 포트(22/tcp)를 허용해야 합니다.
그렇지 않으면 SSH 접속이 끊겨 서버에 다시 접근하지 못할 수 있습니다.

4단계: iPad에서 SSH 연결

iPad에 Termius나 Blink Shell과 같은 SSH 클라이언트 앱을 설치합니다.
앱에서 다음과 같이 접속 명령어를 실행하거나 연결 정보를 설정합니다.

ssh 사용자명@외부공인IP주소 -p 외부포트번호
# 예시:
ssh your_username@121.141.19.193 -p 2222
  • your_username: 회사 서버에 접속할 사용자 계정 이름

  • 121.141.19.193: 회사의 공인 IP 주소
    (네이버에서 "내 아이피" 검색 시 나오는 IP와 유사합니다. 회사 네트워크의 공인 IP는 변경될 수 있습니다.)

  • 2222: 라우터에 설정한 외부 포트 번호

💡 추가: 유동 공인 IP 대비 (DDNS)

회사의 공인 IP 주소가 자주 변경되는 경우(유동 IP), 매번 변경된 IP 주소를 확인하여 접속하기는 어렵습니다.
이럴 때 DDNS(Dynamic DNS) 서비스를 사용하면 편리합니다.

  • DDNS 서비스(예: No-IP, DuckDNS, IPTIME 공유기 자체 DDNS 등)에 가입하고, 라우터 또는 서버에 DDNS 클라이언트를 설정하면, 특정 도메인 이름(예: mycompanyserver.ddns.net)으로 접속해도 항상 현재 공인 IP 주소로 연결되도록 할 수 있습니다.

이 경우 iPad에서 다음과 같이 접속합니다.

ssh your_username@mycompanyserver.ddns.net -p 2222

🔒 보안 강화 권장사항 (핵심!)

안전한 SSH 접속을 위해 다음 사항들을 반드시 적용하세요.

  • 비표준 포트 사용: 외부 SSH 접속 포트를 기본 22번 대신 2222와 같이 무작위 공격 대상이 될 확률이 낮은 포트로 변경합니다.

  • SSH 키 인증 사용: 패스워드 인증 대신 공개키(Public Key) 방식으로 인증하도록 서버를 설정합니다.
    이는 패스워드 무차별 대입 공격을 원천적으로 차단하는 가장 강력한 보안 방법입니다.

  • 설정 방법: 로컬 PC나 iPad에서 SSH 키 쌍을 생성한 후, 공개키를 서버의 ~/.ssh/authorized_keys 파일에 등록합니다.
    sshd_config에서 PasswordAuthentication no로 설정합니다.

  • 방화벽 설정: 라우터와 서버(UFW)에서 SSH 포트(22) 외 불필요한 모든 포트를 차단하여 공격 표면을 최소화합니다.

  • 로그 모니터링: 서버의 SSH 접속 로그(/var/log/auth.log 등)를 주기적으로 확인하여 의심스러운 접근 시도가 없는지 감시합니다.

  • Fail2Ban 설치: SSH 로그인 실패 횟수를 모니터링하여 일정 횟수 이상 실패한 IP를 자동으로 차단하는 Fail2Ban과 같은 도구를 설치합니다.

⚠️ 주의사항

  • 라우터 지원 확인: 사용 중인 회사 라우터가 포트 포워딩 기능을 지원하는지 반드시 확인해야 합니다.
    일부 보안 정책이 강한 기업 네트워크에서는 라우터 설정 변경이 제한될 수 있습니다.

  • 공인 IP의 유동성: ISP(인터넷 서비스 제공자)에 따라 할당되는 공인 IP가 주기적으로 변경될 수 있습니다.
    이 경우 DDNS 설정이 필수입니다.

  • 네트워크 정책: 회사 네트워크 보안 정책을 반드시 확인하고 준수해야 합니다.
    무단으로 포트 포워딩을 설정하거나 보안을 약화시키는 행위는 회사 정책 위반으로 이어질 수 있습니다.

🔄 대안 방법 (포트 포워딩이 불가할 경우)

회사 네트워크 환경 때문에 포트 포워딩 설정이 어렵거나 허용되지 않는 경우, 다음과 같은 대안을 고려할 수 있습니다.

1. VPN 사용

라우터 또는 서버에 VPN 서버를 구축하고, iPad에서 이 VPN 서버로 먼저 연결합니다.

  • VPN 연결이 성공하면 iPad는 회사 내부 네트워크의 일부가 되므로, 서버의 사설 IP 주소(예: 192.168.1.122)로 직접 SSH 접속이 가능해집니다.
  • 장점: 보안성이 높고, SSH 외 다른 내부 서비스에도 접근할 수 있습니다.
  • 단점: VPN 서버 구축 및 관리가 필요하며, 라우터/서버가 VPN 기능을 지원해야 합니다.

2. 역방향 SSH 터널링 (Reverse SSH Tunneling)

  • 이 방법은 공인 IP가 고정된 중간 서버(Jump Server)가 필요합니다.
    회사 서버에서 이 중간 서버로 SSH 터널을 역방향으로 생성합니다.

  • 회사 서버에서 실행 (중간 서버: user@jump-server.com 예시)

ssh -R 2222:localhost:22 user@jump-server.com

이 명령어는 회사 서버의 22번 포트(localhost:22)를 jump-server.com의 2222번 포트로 터널링합니다.

  • iPad에서 접속
    이제 iPad에서 중간 서버의 2222번 포트로 접속하면, 이 터널을 통해 회사 서버의 SSH 서비스로 연결됩니다.
ssh -p 2222 user@jump-server.com
  • 장점: 회사 라우터의 포트 포워딩 설정 없이 외부에서 접근할 수 있습니다.
  • 단점: 항상 켜져 있는 중간 서버가 필요하며, 회사 서버에서 중간 서버로의 아웃바운드 SSH 연결이 허용되어야 합니다.
profile
에러가 나도 괜찮아 — 그건 내가 배우고 있다는 증거야.

0개의 댓글