최근에 Raspberry Pi에서 SSH를 설정했습니다. 특히 App Server Auditor를 사용하여 iPhone을 통해 컴퓨터를 제어 할 수 있기 때문에 수영을 많이했습니다 . 슬프게도 이것은 로컬 네트워크를 통해서만 작동합니다.
집 밖에서 SSH를 작동 시키려면 어떻게해야합니까? (앱과 함께 작동하는 것이 좋습니다.)
최근에 Raspberry Pi에서 SSH를 설정했습니다. 특히 App Server Auditor를 사용하여 iPhone을 통해 컴퓨터를 제어 할 수 있기 때문에 수영을 많이했습니다 . 슬프게도 이것은 로컬 네트워크를 통해서만 작동합니다.
집 밖에서 SSH를 작동 시키려면 어떻게해야합니까? (앱과 함께 작동하는 것이 좋습니다.)
답변:
내가 데비안에서 사용한 단계는 다음과 같습니다.
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 확인 을 클릭 한 다음 추가
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. 라우터 모델을 찾으십시오.
c. 전달 포트에 대한 자세한 안내서를 찾으려면 라우터 브랜드와 모델을 입력하십시오.
d. 라우터 브랜드 및 모델을 선택한 후 리디렉션 된 페이지에서 기본 안내서를 클릭하십시오.
e. 정적 IP 텍스트 상자 에 1 단계에서 제공 한 Pi의 정적 IP를 입력하십시오.
f. 단계와 정방향 포트 22를 따르십시오. 소스 포트는 22이고 대상 포트는 무엇이든 될 수 있습니다 .pi로 sshing 할 때 대상 포트를 사용하십시오. 혼란을 피하기 위해 동일한 소스 및 대상을 사용하는 경향이 있습니다. 포트.
학습서를 따르는 경우 ip 주소를 도메인 이름으로 바꾸어 어디에서나 pi에 로그인하십시오. 예-pi@hometorrent.dnsdynamic.com : 22를 사용하여 내 pi에 넣습니다.
sudo
에서 /etc/rc.local
이미 루트로 실행하는 것이 아닌가요?
먼저 포트 전달을 설정해야합니다. 라우터마다 약간 씩 다르므로 라우터의 세부 사항을 찾아야합니다. 대부분의 라우터에서 사용할 수
있는 일반적인 포트 포워딩 방법 안내서 가 있지만 실제 라우터 모델에 대한 안내서를 찾는 것이 좋습니다.
23456과 같은 라즈베리 파이에 연결되도록 기억에 남는 포트를 설정하십시오. 공통 포트 번호 를 덮어 쓰지 않도록주의하십시오 .
마지막으로 ssh를 사용하여 다음을 수행하십시오.
$ ssh -p 23456 user@IP
어디:
-p
명령은 ssh에게 터널을 시도 할 포트를 알려줍니다.가정용 랩톱 또는 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 로그인하는 데 사용하는 사용자 이름 / 암호입니다.
시간이 지남에 따라이 질문은 오래되었습니다. 공개적으로 접근 가능한 IPv4 주소를 얻을 가능성이 적습니다. CGNAT를 사용하고있을 가능성이 높습니다. 즉, ISP의 다른 고객과 단일 공용 IPv4를 공유한다는 의미입니다. 따라서 PI 또는 다른 대상으로 포트 전달을 수행 할 수 없습니다.
IPv6이있는 경우 PI에 고정 주소를 부여하고 라우터에서이 주소에 액세스 할 수 있습니다. 많은 모바일 제공 업체가 이제 전화기에 IPv6를 제공합니다. 오래된 "토지 기반"ISP (Fiber, DSL, coax 등)는 종종 발을 끌고 있습니다.
클라우드 어딘가에 퍼블릭 IPv4가 포함 된 저렴한 VPS (가상 사설 서버)를 확보하고 PI에서 VPS로 SSH 터널을 만들 수도 있습니다.
phalt의 답변 외에도 No IP 와 같은 동적 DNS 서비스 중 하나를 확인해야합니다 . DSL 또는 케이블 공급자의 연결이 끊어져 IP 주소가 매일 변경 될 수 있지만 고정 호스트 이름으로 홈 네트워크에 액세스 할 수 있습니다. 또한 멋진 시작 페이지가 있으며 이에 따라 라우터를 설정하는 방법도 소개합니다.
inadyn
IP가 변경 될 때 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
도움이 되었기를 바랍니다.
스티브 irwin의 답변에 추가 :
무선 랜을 통해 연결하는 경우 다음을 사용하십시오.
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
위의 내용을 변경 한 후 다시 시작해야합니다 networking
.
sudo /etc/init.d/networking restart
따라서 방화벽 (라우터) 뒤에 ssh 서버 (Raspberry PI)가 있고 어디서나 연결하려고합니다. ssh 서버가 올바르게 설정되었다고 가정합니다. 예를 들어 Raspberry에서 'ssh username @ localhost date'를 실행하면 현재 날짜 / 시간이 표시됩니다.
두 가지 문제를 해결해야합니다.
솔루션이 존재합니다 (다른 사람들이 지적했듯이).
올바르게 설정 한 경우 다음을 사용하여 rasbperry pi를 연결할 수 있습니다.
ssh username@[yourIP] -p [port]
# or using dyndns
ssh username@myname.dyndns.org -p [port]
지금까지 언급되지 않은 또 다른 매우 편리한 솔루션은 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
VPN을 사용하여 파이에 들어오는 액세스를 활성화 할 수 있습니다. OpenVPN은 인터넷을 통해 액세스 할 수있는 컴퓨터 (수신 포트)가 필요한 솔루션입니다. 그러나 한 대의 컴퓨터에 액세스 할 수있는 한 다른 컴퓨터는 OpenVPN 서버에 대한 클라이언트 일 수 있습니다.
다른 옵션은 VPN을 생성하기위한 중앙 서버를 제공하는 ZeroTier와 같은 서비스를 사용하는 것이므로 자체 서버를 실행할 필요가 없습니다. 이것은 또한 무료입니다.