네트워크 인터페이스 연결을 전환하는 동안 SSH 연결을 유지하고 지속


13

대본:

  1. 책상에 이더넷에 연결되고 SSH를 통해 원격 서버에 연결된 노트북
  2. SSH 연결을 방해하지 않고 랩톱을 사용하여 사무실의 다른쪽으로 이동하고 WiFi로 변경하려는 경우

시도했습니다 : 먼저 WiFi에 연결 한 다음 이더넷 연결을 끊으십시오. 또한 먼저 이더넷 연결을 끊고 WiFi에 연결하십시오. 두 방법 모두 작동하지 않습니다. 또한 클라이언트에 대한 OS 옵션과 함께 두 가지 Ubuntu 및 OS X 서버를 사용할 때도 시도했습니다. 불운.

SSH 연결에 이전의 연결이 끊긴 인터페이스 대신 새로 연결된 네트워크 인터페이스를 사용해야한다고 알려주는 방법이 필요한 것 같습니다. 어떤 아이디어?

나는 하루 종일 WiFi를 유지할 수 있다는 것을 알고 있지만 그렇게하고 싶지 않습니다. 또한 원격 서버의 화면 세션 내에서 작업 한 다음 인터페이스를 변경 한 후 해당 화면 세션에 다시 연결할 수 있지만 그중 하나도 원하지 않습니다. 예를 들어 SSH를 통한 데이터베이스 덤프와 같은 큰 명령을 파이핑하거나 SSHFS를 통해 파일을 열거 나 재 연결의 방해를 피하고 싶을 수 있습니다.


3
동일한 IP 주소를 두 가지 방법으로 가져 오면 제대로 작동합니다. 그렇지 않다면 거의 불가능합니다.
Alan Curry

@AlanCurry 클라이언트와 서버가 모두 MPTCP를 지원하면 가능합니다. 그러나 MPTCP 지원은 여전히 ​​매우 제한적이므로 그럴 가능성은 낮습니다.
kasperd

답변:


4

이 솔루션은 SSHFS 등에서는 작동하지 않을 것으로 생각되지만 적어도 쉘 자체에 대한 로밍 지원을 제공하는 Mosh 를 살펴볼 수 있습니다 .


이것은 매우 좋은 솔루션처럼 보이지만 불행히도 서버에도 설치해야하며 권한으로 인해 항상 가능한 것은 아닙니다.
user000001

4

정의에 따르면이 작업을 수행 할 수 없습니다. SSH 세션은 4 개의 튜플 (소스 주소, 소스 포트, 대상 주소, 대상 포트)로 정의 된 TCP 연결을 통해 실행됩니다. 인터페이스가 다운 될 때 OS가 연결을 끊는다는 점 외에는 기존 연결을 클라이언트의 다른 주소로 이동할 수 없습니다.

NAT는이 그림을 복잡하게 만들 수 있지만 어떤 식 으로든 도움이되지는 않습니다.


예. 그러나 소켓이 닫 혔음을 알면 응용 프로그램을 다시 연결할 수 있습니다. SSH 프로토콜에 이전 세션을 재개 할 수있는 조항이 있습니까?
Ajay Brahmakshatriya

@AjayBrahmakshatriya SSH에는 세션을 재개 할 도구가 없습니다
Ferrybig

2

오래된 스레드, 나는 알고 있지만, 같은 것을 찾고 있었기 때문에 완전성을 위해 ...

Windows 7 이상에서는 Wi-Fi 어댑터와 이더넷 어댑터를 모두 선택하고 "브리지 연결"을 선택할 수 있어야합니다. 이렇게하면 두 IP 주소 모두에 단일 IP 주소가 제공되며 이제 이더넷을 원하는대로 자유롭게 연결 및 재 연결할 수 있습니다 (지속적인 WiFi 적용 범위 제공).


좋은 생각입니다, 나는 이것을 시도해야 할 것입니다.
Doug

이 작업을 수행하는 경우 설정에 따라 한 번에 두 네트워크에 연결할 수 없으며 네트워크 영역의 모든 사용자를
쫓아냅니다

2

나는 이것을 두 가지 방법으로 관리합니다.

데이터 센터 (RDP / Windows / etc)의 터미널 서버에서 세션을 시작하십시오.

또는

GNU 또는 설치 하고 로그인 후 시작하십시오.

꽤 오래된 학교 tmux이기 때문에 선호 screen하지만 지원되는 패키지 만 설치할 수 screen있는 경우 RHEL 저장소에 있습니다.

또는

둘 다하세요.


tmux정말 편리합니다. 내부에 원격 작업을 실행 tmux하는 것은 좋은 습관입니다.
병아리

그래, 난 동의. 다중 창 기능이 훌륭합니다.
Doug

1

쉽게 할 수 없습니다.

IP 또는 AP 간 이동시 또는 장기간 네트워크 연결 끊기 동안 텔넷 또는 SSH 세션을 유지할 수있는 많은 고가의 응용 프로그램을 지적 할 수 있지만 기본적으로 항상 열려있는 서버를 만들어이를 달성합니다. 서버가 연결이 다르거 나 끊어진 것을 알 수 없도록 클라이언트 시스템에 대한 -side 세션.

나는 당신이 그런 것을 코딩 할 수 있다고 생각하지만, 쉽게 할 수 있다면 클라이언트가 무선 핸드 헬드 스캐너에서 터미널 연결을 열어 두는 데 5 가지 비용이 부과되지 않을 것이라고 생각합니다.

그럼에도 불구하고 화면을 우연히 발견했지만 영구 SSH 세션을 생성한다고 주장했습니다. 실제로는 작동 할 수 있습니다 ...


1

유선 및 Wi-Fi 간을 전환하면 소스 IP 주소가 변경 될 수 있습니다. 이렇게하면 ssh 세션이 다시 시작되지 않습니다.

나는 리눅스에서 VPN을 통해 연결하고 VPN 연결이 항상 동일한 IP를 귀하의 계정에 제공하는지 확인하여 이것을 처리했습니다 (강제하기는 어렵지 않지만 어쨌든 기본적으로 이미 VPN을 통해 동일한 IP를 수신 할 가능성이 높습니다 사용 가능하지만 확실하게 시행하는 것이 좋습니다). 나는 주로 vtun을 사용하지만 openvpn도 괜찮습니다. 연결이 VPN을 통과하는지 확인하십시오 (올바른 라우팅, 푸시 된 접두사 등).

케이블에서 5 분 동안 오프라인 상태를 유지 한 다음 Wi-Fi에 연결 한 상태에서 모든 ssh 세션에 계속 연결되어있을 수있었습니다. 진행중인 핑, mtr, htop 등은 아무 일도없는 것처럼 VPN이 복구 될 때 계속됩니다.


0

ssh 세션을 처음 시작할 때 Wi-Fi 만 사용하십시오. 그런 다음 이더넷을 연결하십시오. 그러면 새 연결이 이더넷을 통과 할 수 있지만 설정된 연결은 wifi에 남아 있습니다. 적어도 OSX에서 이와 같이 작동하는 것을 보았으므로 OS / 하드웨어가 다를 수 있습니다.


0

VM 및 터널링을 사용하는 바보 같은 양의 해킹 으로이 작업을 수행 할 수 있다고 확신합니다.

이것은 테스트되지 않았지만 실제로 작동하는지 알려주세요.

  1. 2 개의 인터페이스, 1 개의 브리지 된 어댑터 (WiFi에 연결) 및 1 개의 호스트 전용 네트워킹이있는 게스트 VM 생성
  2. VM에 브리지 된 어댑터는 아내에 대한 192.168.0.25가 있고 호스트에는 192.168.56.5가 있습니다.
  3. vm 내에서 원격 쪽 포트 22에 대한 터널을 사용하여 ssh 연결을 만듭니다. ssh -L 10022:remote.server.example.com:22
  4. 이제 터널을 통해 연결하십시오. ssh 192.168.56.3 -p 10022
  5. Wi-Fi 연결이 끊어지면 VM의 어댑터를 이더넷 어댑터로 변경하십시오.
  6. 바라건대 라우팅 테이블을 끊거나 조이지 마십시오.

작동하는지 알려주세요.

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