웹사이트 검색

SSHFS를 사용하여 SSH를 통해 원격 파일 시스템을 마운트하는 방법


소개

NFS 마운트를 사용하여 SSH 연결을 통해 파일을 전송하면 두 가지 모두 추가 종속성이 필요하며 보안 문제 또는 기타 오버헤드가 발생할 수 있습니다.

대안으로 SSHFS를 설치하여 SSH만 사용하여 원격 디렉토리를 마운트할 수 있습니다. 이는 추가 구성이 필요하지 않고 원격 시스템의 SSH 사용자로부터 권한을 상속한다는 중요한 이점이 있습니다. SSHFS는 대규모 파일 세트에서 개별적으로 대화식으로 읽어야 할 때 특히 유용합니다.

전제 조건

  • 두 Linux 서버 간에 SSH 액세스를 허용하도록 구성되었습니다. 이들 중 하나는 클라우드 서버가 아닌 로컬 시스템일 수 있습니다. 초기 서버 설정 가이드에 따라 한 시스템에서 다른 시스템으로 직접 연결하여 이 작업을 수행할 수 있습니다.

1단계 - SSHFS 설치

SSHFS는 대부분의 Linux 배포판에서 사용할 수 있습니다. Ubuntu에서는 apt를 사용하여 설치할 수 있습니다.

먼저 apt update를 사용하여 패키지 소스를 새로 고칩니다.

  1. sudo apt update

그런 다음 apt install을 사용하여 sshfs 패키지를 설치합니다.

  1. 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 내에 하위 디렉토리를 만듭니다.

  1. sudo mkdir /mnt/droplet

이제 sshfs를 사용하여 원격 디렉토리를 마운트할 수 있습니다.

  1. 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 를 포함하여 원격 디렉토리에 대한 전체 경로를 제공합니다. , 원격 서버, your_other_server 및 경로(이 경우에는 원격 사용자의 홈 디렉토리에 대한 ~/)입니다. 이것은 SSH 또는 SCP와 동일한 구문을 사용합니다.
  • /mnt/droplet은 마운트 지점으로 사용되는 로컬 디렉토리의 경로입니다.

피어에 의한 연결 재설정 메시지를 수신하면 SSH 키를 원격 시스템에 복사했는지 확인하십시오. sshfs는 백그라운드에서 일반 SSH 연결을 사용하며 SSH를 통해 원격 시스템에 처음 연결하는 경우 원격 호스트의 키 지문을 수락하라는 메시지가 표시될 수 있습니다.

Output
The 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 fuse를 선택한 다음 sudo usermod -a -G fuse sammy를 사용하여 로컬 사용자를 해당 그룹에 추가합니다.

ls를 사용하여 마운트된 디렉토리의 파일을 나열하여 원격 디렉토리의 내용과 일치하는지 확인할 수 있습니다.

  1. ls /mnt/droplet
Output
remote_file1 remote_file2

이제 로컬 시스템에 연결된 물리적 장치인 것처럼 원격 서버의 파일을 사용할 수 있습니다. 예를 들어 /mnt/droplet 디렉토리에 파일을 생성하면 파일이 가상 서버에 나타납니다. 마찬가지로 /mnt/droplet 폴더 안팎으로 파일을 복사할 수 있으며 백그라운드에서 원격 서버로 또는 원격 서버에서 업로드됩니다.

mount 명령은 현재 세션에 대한 원격 디스크만 마운트한다는 점에 유의해야 합니다. 가상 서버 또는 로컬 시스템의 전원이 꺼지거나 다시 시작되면 동일한 프로세스를 사용하여 다시 마운트해야 합니다.

이 마운트가 더 이상 필요하지 않으면 umount 명령을 사용하여 마운트를 해제할 수 있습니다.

  1. sudo umount /mnt/droplet

마지막 단계에서는 영구 마운트를 구성하는 예를 살펴봅니다.

3단계 - 원격 파일 시스템 영구 마운트

다른 유형의 디스크 및 네트워크 마운트와 마찬가지로 SSHFS를 사용하여 영구 마운트를 구성할 수 있습니다. 이렇게 하려면 시작 시 Linux 파일 시스템 마운트를 처리하는 /etc/fstab 파일에 구성 항목을 추가해야 합니다.

nano 또는 좋아하는 텍스트 편집기를 사용하여 /etc/fstab를 엽니다.

  1. 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는 최소한의 구성으로 매우 유용할 수 있습니다.

다음으로 여러 서버에 동시에 탑재할 수 있는 개체 저장소 작업에 대해 알아볼 수 있습니다.