홈 네트워크 외부에서 SSH를 사용하는 방법


15

최근에 Raspberry Pi에서 SSH를 설정했습니다. 특히 App Server Auditor를 사용하여 iPhone을 통해 컴퓨터를 제어 할 수 있기 때문에 수영을 많이했습니다 . 슬프게도 이것은 로컬 네트워크를 통해서만 작동합니다.

집 밖에서 SSH를 작동 시키려면 어떻게해야합니까? (앱과 함께 작동하는 것이 좋습니다.)


라우터에서 포트를 전달할 수 있습니까?
SteveIrwin

1
@SteveIrwin 내가 할 수있는 가능성이 가장 높지만 네트워킹에 익숙하지 않기 때문에 Port Map 과 같은 쉬운 솔루션을 선호합니다 . 실제로 ... Mac의 인터넷을 Pi와 공유하면 전달 된 포트를 공유 할 수 있습니까?
xxmbabanexx

1
포트 포워드 설정은 아마도 포트 맵을 사용하는 것만 큼 쉬울 것입니다. LAN 설정 방법에 대한 자세한 내용을 알려주세요
John La Rooy

가장 좋은 방법은 Weaved 서비스 (www.weaved.com)를 설치하고 완료하는 것입니다. 인터넷에서 찾을 수있는 다른 모든 자습서는 실망스러운 길로 이어질 것입니다.
IgorGanapolsky

socketxp 사용을 제안하는 게시물의 경우 RPI curl에서 다음을 사용하여 socketxp를 다운로드하십시오 -o portal.socketxp.com/download/arm/socketxp && chmod + wx socketxp && sudo mv socketxp / usr / local / bin Linux 파일.
jeonghoon

답변:


20

내가 데비안에서 사용한 단계는 다음과 같습니다.

1. Pi의 고정 IP 설정

a. 명령을 사용하여 인터페이스 파일을 엽니 다

sudo nano /etc/network/interfaces

b. 인터페이스 파일을 다음과 같이 변경하십시오 (이것은 저에게 효과적입니다. 몇 줄을 제외시킬 수 있는지 확실하지 않습니다).

auto lo
iface lo inet loopback
iface eth0 inet static
address 192.168.1.2  #static ip you want for the pi
netmask 255.255.255.0
gateway 192.168.1.1    # the ip address of the router

c. ifconfig 명령을 사용하여 IP가 변경되었는지 확인

2. 동적 DNS 설정

ISP가 할당 한 IP 주소는 동적이므로 IP 주소의 변경 사항을 해결하는 방법이 필요합니다 .dnsdynamic 및 ddclient 소프트웨어를 사용하여이 작업을 수행 할 수 있습니다.

a. dnsdynamic으로 계정에 가입

b. 새 도메인을 추가하고 목록에서 이름과 도메인을 선택합니다. 하위 도메인을 선택하여 사용 가능한 도메인을 선택할 수 있습니다. availabilty 확인 을 클릭 한 다음 추가

dnsdynamic 스크린 샷

3. Pi에서 ddclient 설정

a. 다음 명령을 사용하여 ddclient를 설치하십시오.

sudo apt-get install ddclient

b. 다음 명령을 사용하여 ddclient의 구성 파일을 열고 다음 행을 추가하십시오.

sudo nano /etc/ddclient.conf

파일을 다음과 같이 변경하십시오.

# /etc/ddclient.conf
daemon=600
timeout=10
ssl=yes
protocol=dyndns2
use=web, web=myip.dnsdynamic.com
server=www.dnsdynamic.org
login=x@gmail.com  #userid for dnsdynamic.com
password='xxxx'      #password for the same put inside quotes
x.dnsdynamic.com  #the domain name you created

파일을 저장하십시오.

d. 재부팅시 ddclient 서비스가 자동으로 시작되기를 원합니다.

sudo nano /etc/rc.local

종료 0 (마지막 행) 앞에 다음 명령을 추가하십시오.

sudo /usr/sbin/ddclient -daemon 600 -syslog

ddclient를 시작하려면 pi를 재부팅하거나 프롬프트에서 위의 명령을 실행하십시오. 필요할 때 변경되는 현재 ip 주소로 도메인 이름을 업데이트합니다.

4. 포트 포워딩

a. 라우터 모델을 찾으십시오.

b. portforward.com으로 이동

c. 전달 포트에 대한 자세한 안내서를 찾으려면 라우터 브랜드와 모델을 입력하십시오.

d. 라우터 브랜드 및 모델을 선택한 후 리디렉션 된 페이지에서 기본 안내서를 클릭하십시오.

e. 정적 IP 텍스트 상자 에 1 단계에서 제공 한 Pi의 정적 IP를 입력하십시오.

f. 단계와 정방향 포트 22를 따르십시오. 소스 포트는 22이고 대상 포트는 무엇이든 될 수 있습니다 .pi로 sshing 할 때 대상 포트를 사용하십시오. 혼란을 피하기 위해 동일한 소스 및 대상을 사용하는 경향이 있습니다. 포트.

학습서를 따르는 경우 ip 주소를 도메인 이름으로 바꾸어 어디에서나 pi에 로그인하십시오. 예-pi@hometorrent.dnsdynamic.com : 22를 사용하여 내 pi에 넣습니다.


정말 고마워! 엑서 터 방문에서 돌아 왔을 때 나는 이것을 시도 할 것이다!
xxmbabanexx

+1 멋진 대답,하지만 당신이 정말로 사용해야합니까 sudo에서 /etc/rc.local이미 루트로 실행하는 것이 아닌가요?
HeatfanJohn

따라서 Ngrok 및 Weaved 구성을 완전히 망쳤습니다. 이제 전혀 연결할 수 없습니다!
IgorGanapolsky

2

먼저 포트 전달을 설정해야합니다. 라우터마다 약간 씩 다르므로 라우터의 세부 사항을 찾아야합니다. 대부분의 라우터에서 사용할 수
있는 일반적인 포트 포워딩 방법 안내서 가 있지만 실제 라우터 모델에 대한 안내서를 찾는 것이 좋습니다.

23456과 같은 라즈베리 파이에 연결되도록 기억에 남는 포트를 설정하십시오. 공통 포트 번호 를 덮어 쓰지 않도록주의하십시오 .

마지막으로 ssh를 사용하여 다음을 수행하십시오.

$ ssh -p 23456 user@IP

어디:


사용자 정의 23456 대신 포트 22를 사용할 수없는 이유는 무엇입니까?
IgorGanapolsky

1
@ IgorGanapolsky 당신은 그렇게 할 수 있지만 1) 집 밖에서 SSH를 통해 연결하려는 다른 컴퓨터가 있다면 충돌이 발생하고 2) 많은 "해커"가 22 번 포트를 통해 로그인하려고하므로 더 위험합니다 , 그래서 그것을 폐쇄하는 것이 종종 서버에서 권장됩니다
meneldal

2

가정용 랩톱 또는 RaspberryPi에는 로컬 IP 주소 (10.xxx 범위 또는 192.168.xx) 만 있기 때문에 홈 네트워크 외부에서 (인터넷에서) RaspberryPi (또는 랩톱 / 서버)에 액세스하는 것은 쉬운 작업이 아닙니다. 범위). 인터넷에서 볼 수있는 퍼블릭 IP 주소가 없습니다.

귀하의 질문에 대한 간단한 대답은 SocketXP 와 같은 무료 온라인 서비스를 사용 하여 홈 네트워크 외부에서 RaspberryPi로 SSH에 대한 안전한 공개 터널 엔드 포인트를 제공하는 것입니다.

SocketXP는 외부 네트워크에서 가정의 RaspberryPi에 쉽고 안전하고 쉽게 액세스 할 수있는 방법을 제공합니다. SocketXP는 WiFi 라우터의 설정을 해킹 할 필요가 없습니다. 그것은 즉시 작동합니다. RaspberryPi를 외부에서 SSH로 설정하는 방법을 알아 보려면 SocketXP를 사용하여 RaspberryPi로 SSH를 원격 으로 연결 하는 방법대한 이 블로그를 읽으 십시오.

SocketXP를 설정하는 방법 :

1 단계 : 다음 명령을 사용하여 RaspberryPi에 SocketXP 클라이언트를 설치하십시오.

$ curl -O https://portal.socketxp.com/download/linux/socketxp && chmod +wx socketxp && sudo mv socketxp /usr/local/bin

2 단계 : 다음 명령을 사용하여 SocketXP 클라이언트를 SocketXP 클라우드 서비스에 연결하십시오. 고유 한 인증 토큰을 얻으려면 https://portal.socketxp.com 에 등록해야합니다 .

$ socketxp -register "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1NDk1MTg0MDAsImlkIjoiZ2FuZXNodmVscmFqYW5AZ21ha6K208n0.cB2uYevpH4lWIQGQUJdQ0eiEDqS8OiP_YOiqernnui3rjjadfadsfsfas34"

3 단계 : 인터넷에서 RaspberryPi에 액세스 할 수있는 공개 터널 엔드 포인트를 얻습니다.

$ socketxp -connect tcp://localhost:22

Tunnel Access -> tunnel.socketxp.com:35277

4 단계 : 다음 명령을 사용하여 인터넷에서 RaspberryPi로 SSH 연결합니다.

$ ssh raspberry-username@tunnel.socketxp.com -p 35277

여기서 "raspberry-username"은 RaspberryPi에 SSH 로그인하는 데 사용하는 사용자 이름 / 암호입니다.


1

시간이 지남에 따라이 질문은 오래되었습니다. 공개적으로 접근 가능한 IPv4 주소를 얻을 가능성이 적습니다. CGNAT를 사용하고있을 가능성이 높습니다. 즉, ISP의 다른 고객과 단일 공용 IPv4를 공유한다는 의미입니다. 따라서 PI 또는 다른 대상으로 포트 전달을 수행 할 수 없습니다.

IPv6이있는 경우 PI에 고정 주소를 부여하고 라우터에서이 주소에 액세스 할 수 있습니다. 많은 모바일 제공 업체가 이제 전화기에 IPv6를 제공합니다. 오래된 "토지 기반"ISP (Fiber, DSL, coax 등)는 종종 발을 끌고 있습니다.

클라우드 어딘가에 퍼블릭 IPv4가 포함 된 저렴한 VPS (가상 사설 서버)를 확보하고 PI에서 VPS로 SSH 터널을 만들 수도 있습니다.


0

phalt의 답변 외에도 No IP 와 같은 동적 DNS 서비스 중 하나를 확인해야합니다 . DSL 또는 케이블 공급자의 연결이 끊어져 IP 주소가 매일 변경 될 수 있지만 고정 호스트 이름으로 홈 네트워크에 액세스 할 수 있습니다. 또한 멋진 시작 페이지가 있으며 이에 따라 라우터를 설정하는 방법도 소개합니다.

inadynIP가 변경 될 때 Raspberry Pi에 패키지 를 설치 하여 No-IP DNS 항목을 업데이트 할 수 있습니다. 다음을 실행하여이 작업을 수행 할 수 있습니다.

sudo apt-get install inadyn

inadyn README 에서이 샘플 호출을 받았습니다.

inadyn --dyndns_system default@no-ip.com -u USER-p PASS -a HOST

도움이 되었기를 바랍니다.


No-Ip에는 DUC (동적 업데이트 클라이언트)가있어 IP 주소가 변경되지 않도록합니다.
IgorGanapolsky

0

스티브 irwin의 답변에 추가 :

1 단계:

무선 랜을 통해 연결하는 경우 다음을 사용하십시오.

iface wlan0 inet static
wpa-ssid "xxx" #<=your ssid
wpa-psk "yyy"  #<=your pw
address 192.168.1.xxx #<=preferred static ip (xxx<255)
netmask 255.255.255.0
gateway 192.168.1.1 #<=router's ip

2 단계:

위의 내용을 변경 한 후 다시 시작해야합니다 networking.

sudo /etc/init.d/networking restart

또한 정적 블록 앞에 2 줄을 추가했습니다. 자동 wlan0 allow-hotplug wlan0이 게시물에서 찾았습니다. raspberrypi.stackexchange.com/a/10320/10148 또한 그들없이 시도했지만 작동하지 않았습니다.
XandruCea

이 답변은 Raspbian의 네트워크 구성 및 초기화 시스템의 변경으로 인해 오래된 것으로 간주해야합니다.
goldilocks

0

또한 일부 라우터는 일부 동적 DNS 서비스를 기본적으로 지원하므로 PI에 클라이언트를 설치하지 않고 오버 헤드를 절약하기 위해 라우터에이 옵션 (있는 경우)을 활성화 할 수 있습니다.


0

따라서 방화벽 (라우터) 뒤에 ssh 서버 (Raspberry PI)가 있고 어디서나 연결하려고합니다. ssh 서버가 올바르게 설정되었다고 가정합니다. 예를 들어 Raspberry에서 'ssh username @ localhost date'를 실행하면 현재 날짜 / 시간이 표시됩니다.

두 가지 문제를 해결해야합니다.

  • 라우터는 고정 포트를 라즈베리 ssh 포트 (일반적으로 22)로 전달해야합니다.
  • 라우터의 공용 IP 주소를 알고 있어야합니다 (일반적으로 라우터 재 연결시 24 시간에 한 번 변경됨).

포트 포워딩 및 DynDNS

솔루션이 존재합니다 (다른 사람들이 지적했듯이).

  • 라우터에서 포트 전달을 여는 것은 각 라우터마다 다르며 일반적으로 라우터 설정 웹 사이트에서 수행됩니다.
  • 현재 IP를 확인하는 것은 외부 웹 사이트 ( https://www.google.com/search?q=whats+my+ip )에서 가장 쉽게 수행 할 수 있습니다. IP가 정기적으로 변경되면 동적 dns 항목 ( https://www.noip.com/ , https://dyn.com/dns/ 등)을 얻을 수 있습니다 .

올바르게 설정 한 경우 다음을 사용하여 rasbperry pi를 연결할 수 있습니다.

ssh username@[yourIP] -p [port] 
# or using dyndns 
ssh username@myname.dyndns.org -p [port]

sshhub.de 사용

지금까지 언급되지 않은 또 다른 매우 편리한 솔루션은 SSHHub (Disclamer, 필자입니다)입니다. ssh의 자체 전달 기능을 사용하여 어디서나 Rasperry PI에 액세스 할 수 있습니다. 안정적이고 무료이며 설치가 매우 간단합니다 . 한 번 등록하십시오 :

ssh info@sshhub.de register

Raspberry PI에서 실행하십시오.

while true; do ssh [username]@sshhub.de -R 22:localhost:22 -N -o ServerAliveInterval=10; sleep 10; done

...그리고 그게 다야! 어디서나 Raspberry Pi를 연결할 수 있습니다 :

ssh -J [username]@sshhub.de localhost

안녕하세요 라즈베리 파이에 오신 것을 환영합니다! 하시기 바랍니다 여행을 하고 방문 보려면 도움말 센터를 일이 여기에 어떻게 작동하는지 확인합니다. 귀하의 기여에 감사 드리지만 귀하의 답변에 귀하의 소속을 공개 하도록 요청 하십시오 . (저는 귀하가 권장 소프트웨어의 저자라고 가정합니다.)
Ghanima

올바른 방향으로 나를 가리켜 주셔서 감사합니다. 나는 저자입니다. 나는 해결책을 찾는 사람들에게 내 대답으로 가치를 제공하고 싶습니다. 그리고 내 행동과 sshhub 자체를 바랍니다.
올리버

0

VPN을 사용하여 파이에 들어오는 액세스를 활성화 할 수 있습니다. OpenVPN은 인터넷을 통해 액세스 할 수있는 컴퓨터 (수신 포트)가 필요한 솔루션입니다. 그러나 한 대의 컴퓨터에 액세스 할 수있는 한 다른 컴퓨터는 OpenVPN 서버에 대한 클라이언트 일 수 있습니다.

다른 옵션은 VPN을 생성하기위한 중앙 서버를 제공하는 ZeroTier와 같은 서비스를 사용하는 것이므로 자체 서버를 실행할 필요가 없습니다. 이것은 또한 무료입니다.


또 다른 좋은 옵션은 wireguard 를 사용하는 입니다.
Ingo
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.