연결이 끊긴 후에도 SSHFS 마운트


56

랩톱에서 중앙 서버로 SSHFS 마운트를 사용 하고 있습니다.

분명히 더 긴 연결 끊기 (예 : 일시 중단 중) 후에 SSHFS 마운트가 손상되어 기본 SSH 연결 시간이 초과 될 수 있습니다.

오래 지속되는 연결 끊기 (> 5 분) 또는 다른 IP로 다시 전화 접속을 유지하는 SSHFS 마운트를 얻는 방법이 있습니까?

답변:


62

사용하다 -o reconnect,ServerAliveInterval=15,ServerAliveCountMax=3

이 조합으로 ServerAliveInterval=15,ServerAliveCountMax=3인해 1 분의 네트워크 중단 후 I / O 오류가 발생합니다. 이것은 중요하지만 대부분 문서화되지 않았습니다. 경우 ServerAliveInterval옵션 (그래서 살아 체크하지 않고) 기본에 남아, I / O를 끊지 것 경험 프로세스는 SSHFS 가져 후에도 계속 잠 reconnect'에드. 나는 이것이 쓸모없는 행동이라고 생각합니다.

즉, -o reconnect할당하지 않고 발생 하는 ServerAliveInterval일은 I / O가 성공하거나 ssh가 다시 연결되면 응용 프로그램이 무기한 중단되는 것입니다. 결과적으로 일반적인 응용 프로그램이 완전히 중단됩니다. I / O가 오류를 반환하고 응용 프로그램을 다시 시작하도록하려면 ServerAliveInterval=1이상 이 필요합니다 .

ServerAliveCountMax=3어쨌든 기본,하지만 난 가독성을 위해 그것을 지정할 것을 좋아합니다.


이것은 나를 위해 만들었습니다. 또한 짧은 간격을 사용할 수 있습니다. 너무 많은 문제를 일으키지 않아야하며 전체적인 반응이 향상됩니다.
Manux

문서를 읽지 못했지만 "ServerAliveCountMax = 0"이라는 또 다른 솔루션이 계속 시도한다는 것을 알았습니다. 귀하의 솔루션이 각 실패 후에 3 번의 재 시도를 제공한다고 가정합니까?
PJ Brunet

man 5 ssh_config자세한 내용은 @ PJBrunet 이지만 요점은 15 초마다 ssh가 15 초마다 'keep-alive'핑과 같은 것을 보내 컴퓨터가 여전히 서로 응답하는지 확인하는 것입니다. 3 회 연속 핑이 실패하면 (45 초) 다시 연결하십시오.
Wyatt8740 2016 년

@ Wyatt8740 나는 이것을 더 많이 연구하고 문서를 읽었습니다. 나는 ServerAliveCountMax=3다른 의미를 가지고 있다고 생각 합니다. 실패하면 3 번 더 재 연결을 시도한 다음 포기합니다. 어떤 시점에서 재 시도는 헛된 일이지만, 응용 프로그램에 따라 다릅니다. 다시 한 번 매뉴얼 페이지가 더 구체적 일 수 있다고 생각합니다. IMO라는 단어를 해석하는 방법에는 여러 가지가 있습니다. 그러나 ProtonVPN으로 전환 한 후 특정 문제가 사라졌습니다. 클라이언트와 서버에서 ssh 구성을 확인할 가치가 있다고 생각합니다. 별도의 옵션이 있으므로 실제로 필요한 것은-o reconnect
PJ Brunet

1
이것이 정답입니다.
Fl0v0

52

autossh 및 autofs의 팁에 감사합니다.

그러나 필자의 직접적인 목적으로 문서화되지 않은 훨씬 간단한 솔루션을 찾았습니다.

sshfs -o reconnect server:/path/to/mount

단! 이렇게하면 실제로 쓰기시 인증을 정렬하고 싶습니다 : serverfault.com/q/379728/96905
Jeff Burdges

12

Autossh 는 ssh가 사망했거나 트래픽 전달을 중지 한 것을 발견하면 ssh 세션을 자동으로 다시 연결합니다. 그것은 자동화 된 ssh이기 때문에 다른 IP 및 일시 중단에서 작동합니다 (노트북이 다른 LAN에서 깨어 지더라도).


아마도 Mosh 는 대화식 SSH 세션에 더 좋습니다.
Martin Ueding

@MartinUeding Mosh를 찾았지만 a) sshfs와 작동하지 않습니다. b) 서버에도 설치해야하므로 IMO가 덜 매력적입니다.
PJ Brunet

9

당신이 할 수있는 한 가지는 autofs 를 통해 파일 시스템을 마운트하는 것 입니다. Autofs는 파일 시스템이 마운트 될 디렉토리에서 무언가를 사용할 때 파일 시스템을 마운트하는 도구입니다. 활동을 감지하면 파일 시스템이 마운트됩니다. 파일 시스템에서 아무 일도 일어나지 않으면 마운트 해제 된 것입니다.

여기에 내가 이것을 달성하기 위해 Google에서 찾은 방법 이 있습니다.


2

SSH 클라이언트가 연결을 끊지 않도록 구성 할 수 있다고하더라도 지정된 비활성 기간이 지나면 서버가 그렇게하도록 구성되어 있기 때문에 서버를 무시할 수 없기 때문입니다. 연결을 다시 시작하지 않으면 서버가 정지 상태가되어 시간이 지남에 따라 서버 리소스가 크게 낭비 될 수 있습니다.

더 좋은 기술은 컴퓨터를 일시 중지하기 전에 파일 시스템을 마운트 해제하고 컴퓨터가 다시 깨어날 때 다시 마운트하는 것입니다. 이를 수행하는 메커니즘은 컴퓨터를 일시 중지하는 방법에 따라 달라질 수 있습니다. tuxonice 커널을 사용하여 이와 같은 작업을 수행하려면 다음과 같은 지시문이 있습니다.

Unmount /mnt/sshfs

에서 /etc/hibernate/common.conf.


0

kubanczyk답변 은 훌륭합니다. 너무 욕심 많은 sshfs로 인해 전체 인터페이스를 정지시키는 데 문제가 있었으므로 이제 랩톱을 열 때 다시 연결되고 연결 속도가 느려도 고정되지 않는 스크립트로 쉽게 연결하기 위해 bash 스크립트를 사용할 수 있습니다 (아마도 매우 안전하지는 않지만 많은 웹 프로젝트에 편리합니다.

#!/bin/bash
echo PWD | sshfs USER@SERVER:/ MOUNT_PATH -o password_stdin,reconnect,ServerAliveInterval=15,ServerAliveCountMax=3 -p PORT -C -oStrictHostKeyChecking=no
if xhost >& /dev/null ; then
    pcmanfm MOUNT_PATH
fi
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.