
공용 인터넷에서 내 집 컴퓨터에 SSH로 연결하거나 연결하는 데 도움이 되는 소프트웨어가 있습니까? (예를 들어, 커피숍).
이와 유사한 질문이 제기된 것으로 알고 있지만 실제로 질문에 답하는 사람은 없는 것 같습니다. DynDns 및 포트 전달에 대한 일반적인 답변을 피하기 위해 몇 가지 세부 정보를 추가하겠습니다.
공개적으로 액세스 가능한 SSH 서버에 액세스할 수 있습니다. 단순히 포트 포워딩만으로는 며칠 동안 지속되는 안정적인 솔루션이 아닙니다. 포트 전달은 연결을 끊고 속도가 느려지는 경향이 있습니다.
DynDns를 설정/지불하고 라우터에서 NAT 통과를 구성하고 싶지 않습니다.
나는 다음이 가능해야 한다고 생각합니다. 이미 이 작업을 수행하는 소프트웨어가 있는지는 모르겠습니다.
P2P가 홀 펀치 NAT 통과를 프로그래밍하는 방식과 마찬가지로, 홀 펀치를 통해 적절한 포트에 대한 외부 액세스를 여는 프로그램을 내 집 컴퓨터에서 실행하는 것이 가능해야 합니다. 또한 프로그램은 가정용 컴퓨터의 공용 IP와 구멍이 뚫린 외부에서 볼 수 있는 포트를 어딘가(예: 공용 서버 또는 이메일을 통해)에 브로드캐스팅하고 이 정보를 주기적으로 업데이트할 수 있습니다.
이런 소프트웨어가 존재하나요? 이 기능의 일부는 이미 다양한 토렌트 소프트웨어를 통해 구현되었습니다.
답변1
자신이 무엇을 하고 있는지 실제로 알고 장치와 주변 네트워크를 적절하게 보호할 수 있는 경우가 아니면 어떤 상황에서도 장치를 DMZ에 두는 것을 권장하지 않습니다.
인터넷을 통해 LAN을 에뮬레이트할 수 있는 소프트웨어가 있습니다.LogMeIn 하마치. 이를 호스트에 설치하고 활성화하면 인터넷 어디에서나 VLAN에 로그인하여 액세스할 수 있습니다.
포트 포워딩에 문제가 반드시 있는 것은 아니지만.
또 다른 옵션은 SSH에 내장된 포트 전달 기능을 사용하는 것입니다. 연결하려는 호스트(호스트 2)와 동일한 LAN에 인터넷에서 액세스할 수 있는 다른 SSH 호스트(호스트 1이라고 함)가 있는 경우 컴퓨터에서 연결을 반송하는 명령을 실행할 수 있습니다. (특정 로컬 포트에서) 호스트 1을 통해 호스트 1은 트래픽을 LAN의 포트 전달되지 않은 호스트 2로 라우팅합니다.
명령은 다음과 같으며 호스트 2에 연결하는 데 사용하려는 로컬 컴퓨터에서 실행됩니다.
ssh -L [local-port-to-open]:[local-IP-of-Host-2-according-to-Host-1]:[port-to-connect-to-on-Host-2-from-Host-1] [user-of-Host-1]@[Host-1-address]
그러면 SSH가 관리하는 컴퓨터(인수)의 포트가 열리고 [local-port-to-open]
해당 포트에서 암호화된 터널을 통해 모든 트래픽이 [user-of-Host-1]@[Host-1-address]
에 지정된 대로 Host-2에 대한 인수로 전송됩니다 [local-IP-of-Host-2-according-to-Host-1]:[port-to-connect-to-on-Host-2-from-Host-1]
. 이 방법을 로컬 포트 포워딩이라고 합니다(원격 포트 포워딩은 잘 모르겠습니다).
예를 들어, 포트 전달된 호스트 1을 사용하여 로컬 커피숍에서 포트 전달되지 않은 호스트 2에 연결하여 LAN으로 연결을 바운스한다고 가정해 보겠습니다. 이렇게 하면 원격 시스템에서 PTS가 열리지만 이 터널을 닫을 때까지는 무시할 수 있습니다. 그런 다음 평소처럼 해당 터미널 세션을 닫으면 됩니다.
호스트 1의 공용 IP는 SSH용 201.31.103.212
포트(호스트 1과 호스트 2를 모두 캡슐화하는 NAT) 입니다. 1337
LAN의 호스트 2는 로컬 IP를 가지며 SSH용 192.168.254.40
포트를 사용합니다 . 22
호스트 1의 로그인 사용자 이름은 입니다 fish
.
8080
좋습니다. 로컬 포트가 사용되지 않았으며 이 데모에 일시적으로 사용할 수 있다고 말씀드리겠습니다 .
내가 구성할 명령은 다음과 같습니다.
ssh -L 8080:192.168.254.40:22 [email protected]
이제 8080
로컬 컴퓨터에서 포트를 열고 호스트 1(즉 ) 에 따라 192.168.254.40
포트 (호스트 2)로 보냅니다.22
[email protected]
이제 호스트 2에 SSH를 연결하려면 포트에 컴퓨터를 지정하기만 하면 됩니다 8080
. 호스트 2의 로그인 사용자 이름이 다음과 같다고 가정해 보겠습니다.turtle
ssh [email protected] -p 8080
SSH는 포트를 관리 8080
하고 SSH 요청을 호스트 1로 보내고, 호스트 1은 이를 호스트 2로 보냅니다. 을 사용하는 대신 을 127.0.0.1
사용할 수도 있습니다 localhost
. 단지 선호일 뿐입니다.
SSH 포트 전달의 또 다른 용도는 프록시입니다.
시나리오: 학교에서 개인 노트북을 들고 트위터에 액세스하려고 하는데 차단되어 있습니다(실제로 고등학교에 있으므로 정확하게 이 작업을 수행했습니다). 내 집에는 39.34.81.56
포트에 IP가 있는 포트 전달 SSH 호스트가 있습니다 1337
. 내 노트북의 포트에서 집에 있는 호스트를 통해 Twitter(웹 서버는 가장 일반적으로 포트에서 호스팅됨 80
) 에 대한 연결을 반송하고 싶습니다 . 8080
내 노트북에서 다음 명령을 실행합니다.
ssh -L 8080:twitter.com:80 [email protected] -p 1337
이제 localhost:8080
웹 브라우저에서 액세스할 수 있으며 암호화된 터널을 통해 Twitter의 서버에서 집으로, 그리고 학교에 있는 노트북으로 Twitter를 라우팅합니다.
이와 동일한 방법을 사용하여 공개적으로 SSL(예: 페이스트빈)을 사용하지 않는 웹사이트에 로그인할 수 있으며, SSH를 사용하여 암호화되고 집에서 SSH 없이만 전송되므로 내 자격 증명이 안전한지 확인할 수 있습니다. 확실히 안전해요.
행운을 빌어요!
편집: 참고로 여기에 표시된 IP 주소는 유효한 주소가 아니어야 합니다. 그러나 만약 그렇다면 이러한 IP 사용자를 괴롭히지 마십시오.
답변2
네, 포트 포워딩이 홀 펀칭 방식인 것 같아요. 원한다면 컴퓨터를 DMZ에 두고 모든 혼란을 피할 수 있습니다.