동적 IP에서 인터넷을 통해 항상 시스템에 SSH로 연결할 수 있도록 어떻게 구성 할 수 있습니까?


11

기본적으로 나는 ssh 서버 (Machine A)와 ssh client (Machine B)가 인터넷에 액세스 할 수있는 한 네트워크 구성에 관계없이 teamviewer와 같은 것을 할 수 있기를 원합니다. ), 액세스 권한을 얻을 수 있습니다. 그 이유는 머신 A를 다른 곳으로 옮기고 전원에 연결하고 사전 구성된 여러 Wi-Fi 네트워크 중 하나에 자동 연결되도록하기 위함입니다 (각각 고유 / 다른) 네트워크에서 포트 포워딩 또는 이와 유사한 구성을하지 않고 시스템 B에서 인터넷을 통해 로그인 할 수 있습니다.

어떻게하면 되나요? 핸드 셰이크를 돕기 위해 정적 IP 주소로 서버에 무언가를 설정하는 것은 중요하지 않지만, 이미 존재하는 경우 (팀 뷰어처럼) 타사 서버는 신경 쓰지 않습니다.

명확성을 위해 편집하십시오 : 나는 3 대의 기계, AB와 C가 있습니다

A는 임의의 위치에서 전원을 켜고 끄고 사전 구성된 Wi-Fi 네트워크에 연결되는 헤드리스 라즈베리 파이입니다.

B는 연결하려는 적절한 모니터, 키보드 등이있는 기기입니다.

C는 고정 IP 주소를 가진 임대 AWS 서버이며 B에서 SSH로 안정적으로 연결할 수 있으며 B가 A에 연결하는 데 필요한 모든 것을 설치할 수 있습니다


당신은 세 번째 기계에 ssh 수 있습니까?
Anthon

난 그렇게 생각 @Anthon, 나는 다시 이름을 그들 AB와 C 그들을 위해 설명을 추가, 잘하면 그 지우고 그것을
user2813274

기침 no-ip.com 기침
여호수아

1
no-ip.com은 해당 지역의 방화벽이 반환 트래픽을 허용하지 않으면 도움이되지 않습니다!
bobstro

나는 ssh터널을 아주 짧게 사용 했었다. 그래도 나는 그들과 함께있을 수 없었습니다 autossh. 어떤 이유로 든 업 링크가 끊어지면 항상 수동으로 다시 시작해야합니다. 결국 OpenVPN으로 작은 VPN을 설정했으며 작업을 훌륭하게 수행했습니다.
Blacklight Shining

답변:


11

인터넷에 컴퓨터 C가 있으면 이름이라는 특수 계정 sesame을 만들고 A에 공개 키를 sesameC 의 계정으로 복사 한 공개 / 개인 키를 사용하여 계정을 만듭니다 .

이제 A에서 C로 로그인 할 수 있지만 그렇게하는 대신 다음을 수행하십시오.

ssh -N -R 19930:localhost:22 sesame@yourserverC

(이를 수면 문 또는 10 초와 결합하여 무한 루프로 감싸서 WiFi가 다운되어 연결이 끊어지면 연결이 다시 설정되도록 할 수 있습니다)

컴퓨터 B에서 일반적으로 C에있는 모든 계정에 로그인하십시오 (계정이 될 필요는 없지만 sesame다른 계정은 내가 사용하는 것입니다). 그리고 C를 사용 중이면 다음을 사용하여 A에 로그인하십시오.

ssh localhost -p 19930

물론 19930과 다른 번호를 사용할 수 있습니다.

A의 개인 키가 암호로 보호되어 있지 않은 경우 ssh -N -R ...from 을 실행할 수 있습니다 /etc/rc.local. 이 경우 sesame컴퓨터 A가 손상 / 도난 당할 때 서버 C의 위험이 제한되도록 기능이 제한된 별도의 계정 을 만들어야 합니다. 그렇기 때문에 별도의 계정을 사용하여 B에서 C로 이동하는 것이 좋습니다.

당신은 실제로의 로그인 쉘을 설정할 수 sesame/etc/passwd/bin/false더 이상 로그인에 대한 계정을 사용할 수 있습니다.


이 솔루션은 TeamViewer를 사용하는 것과 다릅니다. 서버는 포트를 여는 데 사용되며 포트는 직접 통신하도록 리디렉션됩니다. BitTorrent와 같은 프로그램은 다운로드 할 시스템을 찾은 후 직접 통신합니다 (사전 포트를 열지 않아도 됨).
Anthon

따라서 주요 차이점은 모든 트래픽이 서버 C를 통과하고 C는 링크를 설정하는 데만 사용되며 나머지 연결에는 사용되지 않는다는 것입니다. 보안에 관한 한 좋은 지적이 있습니다. 특히 참깨가 최소한의 로그인 외에 C에서 아무것도 할 수 없도록하기 위해해야 ​​할 일이 있습니까? (RHEL 시스템)
user2813274

1
@ user2813274이 트래픽에서는 실제로 트래픽의 대부분이 C를 통과합니다 (BitTorrent에서 유용성을 제거함). sesameC 에서 계정을 얼마나 멀리 제한 할 수 있는지 잘 모르겠습니다. /bin/falsessh가 실제로 로그인하지 않았기 때문에 로그인 셸로 실행 하거나 다른 방법으로 command=매개 변수를 추가하여 제한 할 수 있습니다 .~/.ssh/authorized_keys
Anthon

@ user2813274 직접 시도하지 않은 경우 : 리버스 프록시 설정을위한 특수 계정이있는 경우 로그인 쉘을로 변경하여 해당 계정에 대한 로그인을 비활성화 할 수 있습니다/bin/false .
Anthon

1
@ user2813274 예 나는 그것을 시험해 보았고 리버스 터널을 설정할 수있었습니다 ( ssh localhost -p portnum물론 서버 C에 도착하려면 다른 계정이 필요합니다 )
Anthon

7

Raspberry Pi에 IPv6 터널 (예 : Sixxs )을 설치하십시오. 이제 Pi가 온라인 상태가 될 때마다 온라인으로 유지되는 영구 정적 IPv6 주소를 갖게됩니다. 지금 세상에 연결되어 있으므로 Pi를 보호하십시오.

B가 IPv6 네트워크에 연결된 경우 Pi에 직접 연결하십시오. B가 IPv6 네트워크에 연결되어 있지 않으면 C를 점프 서버로 사용하십시오. 여기서 점프 서버로 IPv4를 통해 C에 연결 한 다음 IPv6를 통해 C에서 Pi로 ssh하십시오.


네트워크가 IPV6을 지원하는 경우 C를 필요로하지 않기 때문에 이것을 좋아합니다. 방화벽이 기본적으로 이것을 차단하는 한 문제가 있습니까?
user2813274

1
Sixx는 IPv6 터널링을위한 둘 이상의 프로토콜을 제공합니다. Anything In Anything (AYIYA)을 사용하려면 Pi에서 인터넷으로 TCP 포트 3874와 UDP 포트 5072가 열려 있어야합니다. 홈 네트워크에서는 이것이 좋을 것입니다. 회사 또는 캠퍼스 네트워크가 다를 수 있습니다.
garethTheRed

터널 설치가 가능하다고 들었지만 Sixxs 서비스에 가입하고 IP 주소 등으로 다시 돌아올 때까지 기다려야 할 것 같습니다. 더 이상 그렇게 간단하지는 않지만 여전히 좋은 해결책입니다. 내가 지금 갈 경로를 생각하지 마십시오.
user2813274

1

또한 이것을보십시오 :

사용 된 기술은 허용 된 답변에 설명 된 기술과 동일하지만 일부 스크립트를 사용하여 작업을 자동화하고 솔루션을보다 일반적으로 만듭니다. 또한 Docker 컨테이너 내부의 전체 구성을 구성하여 무언가가 손상된 경우 기본 시스템이 안전합니다.

그러나 A에서 C 로의 자동 연결을 제공하지는 않으며 수동으로 시작해야합니다. 어쩌면 원하는 것을 정확하게 수행하도록 솔루션을 약간 사용자 정의 할 수 있습니다.


0

아마도 당신은 ssh 또는 터널링 개념 이외의 것을 사용해야 할 것입니다. 나는 whatsapp 또는 전보와 같은 메시징 개념을 사용하는 것이 좋습니다. 그러나 vim과 같은 것을 사용하려면 ssh만큼 좋지 않다고 생각합니다.

전보에는 특정 명령을 수락하고 실행하여 raspi에서 구현하도록 수정할 수있는 전보 cli 클라이언트가 있습니다.

Telegram을 사용하는 경우 C 서버가 전보 메시징 서버로 대체되어 있기 때문에 네트워크를 단순화하고 최소한 C 시스템을 허브를 줄이기 위해 줄일 수 있습니다. 전보에는 이미 iphone 및 Android 클라이언트가 있으므로 B가 필요하다고 생각하지 않습니다 기계도 원하는 경우 특정 OS에 대해 전보 클라이언트를 설치할 수 있습니다. 보안? 전보 메시지가 새겨 져 있습니다. 누군가 당신의 raspi를 복용하고 싶으십니까? 텔레 그램 서버를 먼저 수행합니다.

raspi가 방화벽 / 프록시 / 개인 IP / 동적 IP 뒤에있는 경우에도 raspi가 텔레 그램 서버 (단순히 raspi를 인터넷에 연결)에 연결할 수있는 한 언제든지 원격을 수행 할 수 있습니다.

이 컨셉으로 언제 어디서나 리모컨을 사용할 수 있습니다.


왓. 그것은 안전하지 않습니다, 당신은 임의의 임의의 메시징 응용 프로그램을 신뢰하고 있습니다, 당신은 OP가 무작위 메시지 응용 프로그램을 수정하여 작동하도록해야한다고 말하고 있습니다. 이것은 임의의 메시징 앱이 vim과 같은 것으로 완전히 깨지고 지연 시간이 끔찍하다는 것을 깨닫지 못합니다.
또 다른 사용자

당신이 그것을 사용하는 경우 글쎄, 그냥 당신이 정력과 같이 그것을 사용하는 경우, 나는 그것의 좋은 .. 좋은 조언을 것 같아요 .. 그 확인을 생각 명령을 보내 .. 난 내 대답은 편집 할 수 있습니다
Wicaksono Trihatmaja

나는 이것이 내가 원하는 것이라고 생각하지 않는다. 나는 Pi를 ddosing하는 한 완전히 쉘 액세스를 원한다. 파이를 피하는 것까지는 .. 나는 특별한 설정을해야하기 때문에 정말로 걱정하지 않는다. 심지어의 연결이 간헐적 될 것입니다 둘째 때문에, 그것은 자신을 연결하고 무작위로 뽑은 변경
user2813274

0

역 ssh 포트 포워딩을 살펴 봐야한다고 생각합니다. 간단히 말해서, 먼저 아래 구문을 사용하여 A에서 C로 ssh를 시작한 다음 해당 포트를 사용하여 C에서 A로 다시 터널링하십시오. R-Pi가 이미 있기 때문에 A의 홈 방화벽에 도달하지 않습니다. 터널.

ssh -R 2210 : 로컬 호스트 : 22 myCoolAwsSite.com

그렇게 할 때 보안에 미치는 영향을 고려하십시오. 다시 부팅 한 후 연결이 다시 설정되도록 일부 cron jujitsu를 추가 할 수 있습니다.


오류 ... 이것이 Anthon의 답변과 어떻게 다릅니 까?
user2813274
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.