SSHFS를 사용하여 SSH를 통해 원격 파일 시스템을 마운트하는 방법
소개
NFS 마운트를 사용하여 SSH 연결을 통해 파일을 전송하면 두 가지 모두 추가 종속성이 필요하며 보안 문제 또는 기타 오버헤드가 발생할 수 있습니다.
대안으로 SSHFS를 설치하여 SSH만 사용하여 원격 디렉토리를 마운트할 수 있습니다. 이는 추가 구성이 필요하지 않고 원격 시스템의 SSH 사용자로부터 권한을 상속한다는 중요한 이점이 있습니다. SSHFS는 대규모 파일 세트에서 개별적으로 대화식으로 읽어야 할 때 특히 유용합니다.
전제 조건
- 두 Linux 서버 간에 SSH 액세스를 허용하도록 구성되었습니다. 이들 중 하나는 클라우드 서버가 아닌 로컬 시스템일 수 있습니다. 초기 서버 설정 가이드에 따라 한 시스템에서 다른 시스템으로 직접 연결하여 이 작업을 수행할 수 있습니다.
1단계 - SSHFS 설치
SSHFS는 대부분의 Linux 배포판에서 사용할 수 있습니다. Ubuntu에서는 apt
를 사용하여 설치할 수 있습니다.
먼저 apt update
를 사용하여 패키지 소스를 새로 고칩니다.
- sudo apt update
그런 다음 apt install
을 사용하여 sshfs
패키지를 설치합니다.
- sudo apt install sshfs
참고: SSHFS는 Linux 환경과의 상호 운용성을 제공하는 FUSE라는 파일 시스템 라이브러리를 사용하여 Mac 또는 Windows에 설치할 수 있습니다. 그들은 이 자습서와 동일한 개념 및 연결 세부 정보를 사용하지만 다른 구성 인터페이스를 사용하거나 타사 라이브러리를 설치해야 할 수 있습니다. 이 자습서에서는 Linux의 SSHFS만 다루지만 이러한 단계를 Mac 또는 Windows FUSE 구현에 적용할 수 있어야 합니다.
프로젝트의 GitHub 저장소에서 Windows용 SSHFS를 설치할 수 있습니다.
macFUSE 프로젝트에서 Mac용 SSHFS를 설치할 수 있습니다.
2단계 - 원격 파일 시스템 마운트
Linux 환경에서 원격 파일 시스템을 마운트할 때마다 먼저 마운트할 빈 디렉토리가 필요합니다. 대부분의 Linux 환경에는 이 목적을 위해 하위 디렉토리를 만들 수 있는 /mnt
라는 디렉토리가 있습니다.
참고: Windows에서 원격 파일 시스템은 때때로 G:
와 같은 자체 드라이브 문자로 마운트되며 Mac에서는 일반적으로 /Volumes
디렉토리에 마운트됩니다.
mkdir
명령을 사용하여 droplet
이라는 /mnt
내에 하위 디렉토리를 만듭니다.
- sudo mkdir /mnt/droplet
이제 sshfs
를 사용하여 원격 디렉토리를 마운트할 수 있습니다.
- sudo sshfs -o allow_other,default_permissions sammy@your_other_server:~/ /mnt/droplet
이 명령에 대한 옵션은 다음과 같이 작동합니다.
-o
는 기타 마운트 옵션 앞에 옵니다(이는 일반적으로 비SSH 디스크 마운트에 대해mount
명령을 실행할 때와 동일함). 이 경우allow_other
를 사용하여 다른 사용자가 이 마운트에 액세스할 수 있도록 허용합니다(기본적으로sshfs
가 이를 방지하므로 일반 디스크 마운트처럼 작동합니다). , 및default_permissions
(그렇지 않으면 일반 파일 시스템 권한을 사용하도록).sammy@your_other_server:~/
는 원격 사용자 이름sammy를 포함하여 원격 디렉토리에 대한 전체 경로를 제공합니다. code>, 원격 서버,
your_other_server
및 경로(이 경우에는 원격 사용자의 홈 디렉토리에 대한~/
)입니다. 이것은 SSH 또는 SCP와 동일한 구문을 사용합니다./mnt/droplet
은 마운트 지점으로 사용되는 로컬 디렉토리의 경로입니다.
피어에 의한 연결 재설정
메시지를 수신하면 SSH 키를 원격 시스템에 복사했는지 확인하십시오. sshfs
는 백그라운드에서 일반 SSH 연결을 사용하며 SSH를 통해 원격 시스템에 처음 연결하는 경우 원격 호스트의 키 지문을 수락하라는 메시지가 표시될 수 있습니다.
OutputThe authenticity of host '164.90.133.64 (164.90.133.64)' can't be established.
ED25519 key fingerprint is SHA256:05SYulMxeTDWFZtf3/ruDDm/3mmHkiTfAr+67FBC0+Q.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
참고: sudo
권한 없이 SSHFS를 사용하여 원격 디렉토리를 마운트해야 하는 경우 sudo를 사용하여 로컬 시스템에
를 선택한 다음 fuse
라는 사용자 그룹을 생성할 수 있습니다. groupadd fusesudo usermod -a -G fuse sammy
를 사용하여 로컬 사용자를 해당 그룹에 추가합니다.
ls
를 사용하여 마운트된 디렉토리의 파일을 나열하여 원격 디렉토리의 내용과 일치하는지 확인할 수 있습니다.
- ls /mnt/droplet
Outputremote_file1 remote_file2
이제 로컬 시스템에 연결된 물리적 장치인 것처럼 원격 서버의 파일을 사용할 수 있습니다. 예를 들어 /mnt/droplet
디렉토리에 파일을 생성하면 파일이 가상 서버에 나타납니다. 마찬가지로 /mnt/droplet
폴더 안팎으로 파일을 복사할 수 있으며 백그라운드에서 원격 서버로 또는 원격 서버에서 업로드됩니다.
mount
명령은 현재 세션에 대한 원격 디스크만 마운트한다는 점에 유의해야 합니다. 가상 서버 또는 로컬 시스템의 전원이 꺼지거나 다시 시작되면 동일한 프로세스를 사용하여 다시 마운트해야 합니다.
이 마운트가 더 이상 필요하지 않으면 umount
명령을 사용하여 마운트를 해제할 수 있습니다.
- sudo umount /mnt/droplet
마지막 단계에서는 영구 마운트를 구성하는 예를 살펴봅니다.
3단계 - 원격 파일 시스템 영구 마운트
다른 유형의 디스크 및 네트워크 마운트와 마찬가지로 SSHFS를 사용하여 영구 마운트를 구성할 수 있습니다. 이렇게 하려면 시작 시 Linux 파일 시스템 마운트를 처리하는 /etc/fstab
파일에 구성 항목을 추가해야 합니다.
nano
또는 좋아하는 텍스트 편집기를 사용하여 /etc/fstab
를 엽니다.
- sudo nano /etc/fstab
파일 끝에 다음과 같은 항목을 추가합니다.
…
sammy@your_other_server:~/ /mnt/droplet fuse.sshfs noauto,x-systemd.automount,_netdev,reconnect,identityfile=/home/sammy/.ssh/id_rsa,allow_other,default_permissions 0 0
영구 마운트에는 예상대로 작동하도록 하기 위해 종종 이와 같은 다양한 옵션이 필요합니다. 다음과 같이 작동합니다.
sammy@your_other_server:~/
는 이전과 마찬가지로 다시 원격 경로입니다./mnt/droplet
은 다시 로컬 경로입니다.fuse.sshfs
는 이 원격 디렉토리를 마운트하는 데 사용되는 드라이버를 지정합니다.noauto,x-systemd.automount,_netdev,reconnect
는 네트워크 연결이 로컬 시스템에서 끊어지는 경우 네트워크 드라이브에 대한 영구 마운트가 정상적으로 작동하도록 함께 작동하는 옵션 세트입니다. 원격 시스템.identityfile=/home/sammy/.ssh/id_rsa
는 원격 디렉토리가 자동으로 마운트될 수 있도록 로컬 SSH 키에 대한 경로를 지정합니다. 이 예에서는 로컬 및 원격 사용자 이름이 모두sammy
라고 가정합니다. 이는 로컬 경로를 나타냅니다./etc/fstab
가 효과적으로 루트로 실행되고 그렇지 않으면 원격 서버에서 신뢰하는 키를 확인하기 위해 어떤 사용자 이름의 SSH 구성을 알 수 없기 때문에 이를 지정해야 합니다.allow_other,default_permissions
는 위의mount
명령과 동일한 권한을 사용합니다.0 0
은 원격 파일 시스템이 오류 발생 시 로컬 시스템에 의해 덤프되거나 검증되지 않아야 함을 나타냅니다. 이러한 옵션은 로컬 디스크를 마운트할 때 다를 수 있습니다.
파일을 저장하고 닫습니다. nano
를 사용하는 경우 Ctrl+X
를 누른 다음 메시지가 표시되면 Y
를 누른 다음 ENTER
를 누릅니다. 그런 다음 예를 들어 sudo reboot now
를 사용하여 로컬 시스템을 다시 시작하고 마운트가 자동으로 다시 생성되는지 확인하여 /etc/fstab
구성을 테스트할 수 있습니다.
영구 SSHFS 마운트가 반드시 널리 사용되는 것은 아닙니다. SSH 연결 및 SSHFS의 특성은 더 큰 중복성 및 기타 옵션으로 구성할 수 있는 SMB 또는 NFS 마운트에 커밋할 필요가 없는 경우 일반적으로 일시적인 일회성 솔루션에 더 적합하다는 것을 의미합니다. 즉, SSHFS는 매우 유연하며 더 중요한 것은 본격적인 파일 시스템 드라이버 역할을 하므로 다른 디스크 마운트와 마찬가지로 /etc/fstab
에서 구성하고 최대한 많이 사용할 수 있습니다. 필요합니다. 실수로 SSH를 통해 의도한 것보다 더 많은 원격 파일 시스템을 노출하지 않도록 주의하십시오.
결론
이 자습서에서는 한 Linux 환경에서 다른 Linux 환경으로 SSHFS 마운트를 구성했습니다. 프로덕션 배포를 위한 가장 확장 가능하거나 성능이 뛰어난 솔루션은 아니지만 SSHFS는 최소한의 구성으로 매우 유용할 수 있습니다.
다음으로 여러 서버에 동시에 탑재할 수 있는 개체 저장소 작업에 대해 알아볼 수 있습니다.