동일한 홈 네트워크에서 다른 Linux 시스템과 폴더를 공유하려면 어떻게합니까?


43

한 우분투 컴퓨터의 폴더를 동일한 홈 네트워크의 다른 우분투 컴퓨터와 공유하려고합니다. 폴더를 마우스 오른쪽 버튼으로 클릭하고 공유 옵션을 선택하면 폴더를 공유하기 위해 Windows 네트워크 공유 서비스를 설치해야한다고 알려줍니다. Windows는 이것과 어떤 관련이 있습니까? Windows 컴퓨터와 공유하려고하지 않습니다 ...

답변:


22

Windows는 이것과 어떤 관련이 있습니까? Windows 컴퓨터와 공유하려고하지 않습니다 ...

당신 말이 맞아요, 혼란 스러울 수 있습니다. 먼저 용어를 명확하게 해 보겠습니다.

Windows가 파일 및 프린터를 공유하는 방식을 SMB 라고 합니다. SAMBA 프로젝트 의 사람들은 Linux에 대한 모든 Microsoft 프로토콜 및 사양을 구현했습니다. 따라서 우분투는 Windows와 동일한 종류의 파일 공유 (Samba)를 지원합니다.

  • SAMBA를 사용하여 Linux 시스템간에 파일을 공유 할 수 있습니다. 사실, 예를 들어 Windows 컴퓨터와 친구가있는 경우에 선호 할 수 있습니다.

  • 또는 NFS (Network File System) 인 파일을 공유 하는 Linux 방식 을 사용할 수 있습니다 . 이전 질문에 대한이 답변은 파일 을 작성하는 방법을 설명합니다. (그러나 오히려 기술적 인 것입니다)

따라서 공유 옵션 대화 상자에서 패키지를 설치하라는 메시지가 표시되면 실제로 Microsoft 소프트웨어 또는 이와 유사한 것을 설치하지 않는 것입니다. 계속 진행하면 완벽하게 안전합니다.

추가:

Salih Emin의 지시를 따르기 전에 공유를 활성화 할 수 있습니다. 작동하지 않으면 간단한 경고 메시지가 표시되며 필요한 경우 Salih가 설명하는 단계를 수행 할 수 있습니다. 새로 설치하고 최신 시스템에서 사용해 보았으므로 실제로이 작업을 수행해야했습니다.


1
설명 주셔서 감사합니다. 내가 마이크로 소프트로부터 멀어 지려고하는 것은 재밌으며, 리눅스조차도 그들의 일을 사용한다는 것이 밝혀졌다. 어.
EmmyS

4
삼바 사람들은 마이크로 소프트보다 마이크로 소프트 프로토콜을 훨씬 더 잘 구현했습니다. 거기에 약간의 위안 :-)
Stefano Palazzo

8

현재 Lucid에는 Launchpad에있는 버그 # 536766이 있습니다. 이 버그는 파일 공유 설정을 완료하는 데 필요한 패키지를 설치하라는 메시지를 표시하지 않습니다. 그것이 해결 될 때까지 여기에 빠른 해결 방법이 있습니다.

libapache2-mod-dnssd 를 설치 하고 다시 시작해야합니다. 이 링크를 클릭하여 설치하거나 Software Center에서 libapache2-mod-dnssd 를 찾으십시오 .

설치가 완료되면 시스템 → 환경 설정 → 개인 파일 공유로 이동 하여 '네트워크에서 공용 파일 공유'상자를 선택하십시오.

대체 텍스트

이 작업이 완료되면 네트워크의 공용 폴더 내에서 공용 파일 공유를 허용 한 다른 모든 컴퓨터를 볼 수 있어야합니다. 장소 → 네트워크를 클릭 하면 사용 가능한 모든 컴퓨터와 공유 공용 폴더가 표시됩니다.

서버 아이콘을 두 번 클릭하면 관련 공용 폴더가 데스크탑에 마운트됩니다.

링크 텍스트를 통해


이러한 패키지는 아파치 웹 서버와 전혀 관련이 있습니까? LAMP 스택의 일부로 아파치를 이미 설치했으며 깨뜨리고 싶지 않습니다.
EmmyS

1
좋은 발견! (이 방법으로 답변을 편집했습니다.이 패키지는 apache2.2-bin을 종속성으로 설치합니다.이 방법은 더 쉬워 보입니다)
Stefano Palazzo

1
@EmmyS, 패키지는 아파치 설치를 중단하지 않습니다. 나는 문제없이 그 이상을 운영하고 있습니다.
RolandiXor

이 링크가 실제로 디렉토리 공유에 도움이된다는 것을 발견했습니다 : itsfoss.com/share-folders-local-network-ubuntu-windows
MrMas

5

Linux 시스템에서 simpleHTTP 서버를 실행하고 다른 시스템에서 동일하게 액세스 할 수 있습니다.

단계 :

  1. 먼저 공유 할 폴더에서 터미널을 시작하십시오.
  2. 터미널에서 실행- python -m SimpleHTTPServer
  3. 를 사용하여 IP를 확인하십시오 ifconfig.
  4. 다른 컴퓨터의 브라우저에 ip 주소 : 8000을 입력하십시오 (예 : ip가 127.3.4.123이면 브라우저에 127.3.4.123:8000을 입력하십시오)

다운로드 할 폴더에 필요한 파일이 있습니다.


4
다운로드! = 공유.
EmmyS

나를 위해 그것은 훌륭한 답변이지만 Python3의 경우는python3 -m http.server
VanDavv

2

SAMBA 패키지가 아래에 나열되어 있거나 설명의 일부가 아니라고 생각합니다. 대안으로, 다른 메커니즘을 사용한다고 생각하는 환경 설정-> 파일 공유를 시도 할 수 있습니다. 삼바는 설치하기 편리한 것입니다.


나는 삼바가 리눅스와 Windows 사이의 공유를 허용한다는 인상을 받았다. Windows와 공유하고 싶지 않고 다른 Linux 컴퓨터와 만 공유하고 싶습니다.
EmmyS

아니, 네 말이 맞아 두 머신 모두 Samba를 설치해야합니다.
Stefano Palazzo

두 시스템 모두 SMB 프로토콜을 사용해야합니다. Windows는이 방법을 사용합니다. 리눅스 머신은 삼바를 사용합니다.
demented hedgehog

2

"qweborf"를 설치할 수 있습니다. HTTP를 통해 디렉토리를 공유하고 다른 호스트는 브라우저를 사용하여 액세스 할 수 있습니다.

또한 webdav를 활성화하고 디렉토리를 파일 시스템 읽기 / 쓰기로 마운트 할 수 있습니다 (davfs2, KDE, Gnome2, OsX로 테스트).


2

Ubuntu와 완벽하게 통합되고 Windows 호환성에 관심이 없다면 SSH는 허클베리입니다.

LAN을 통해 두 Linux 시스템간에 파일을 공유하는 방법을 참조하십시오 .

다음을 사용하여 SSH 서버를 설치해야 할 수도 있습니다.

sudo apt-get install openssh-server

클라이언트의 파일 관리자 앱에서 다음을 사용하여 서버로 이동할 수 있습니다.

sftp://servername.local

터미널에서 또는 프로그래밍 방식으로 파일에 액세스하려면 sshfs클라이언트 파일 시스템에서 마운트 지점을 작성하는 데 사용 하십시오.


SSH를 통해 파일을 복사하는 다른 프로그래밍 방식에는 scp, 및 (더 나은) 방법이 rsync있습니다.
nobar

2

Linux 전용 네트워킹의 경우 SSHFS가 기본적이고 안정적이며 매우 빠릅니다. SSH를 통해 / home 폴더를 공유하는 두 개의 Xubuntu 컴퓨터 (18.04)가 있습니다.

다음은이 sshfs 를 설정 하고 비밀번호를 제공하지 않고 fstab 을 사용하여 재부팅 한 후 자동으로 다시 연결 하는 방법 입니다. 원격 일시 중단 / 다시 시작 후 다시 연결하는 방법에 대해 serverfault 사용자 kubanczyk 에게 감사합니다 .

연결하는 컴퓨터에는 "로컬 컴퓨터-서핑 상자"를, 연결중인 컴퓨터에는 "원격 컴퓨터-devbox"를 사용하겠습니다.

아래 "remoteuser"를 원격 컴퓨터에서 로그인 한 사용자 이름으로 바꾸고 "localuser"를 로컬 컴퓨터에서 로그인 한 사용자 이름으로 바꾸십시오. 사용자 이름을 확인하려면 echo $USER원격 및 로컬 컴퓨터에서 터미널을 입력하십시오 .

또한 userID 및 groupID를 확인하십시오. 둘 다 1000이어야합니다.

GroupID : 사용자 id -g localuser ID :id -u localuser

1. 로컬 및 원격 컴퓨터의 IP 주소를 얻습니다.

hostname -I

로컬 컴퓨터 ( 'surfbox')에 192.168.1.150을 사용하고 원격 컴퓨터 ( 'devbox')에 192.168.1.151을 사용하겠습니다.

2. 로컬 및 원격 컴퓨터에 패키지 설치

sudo apt install sshfs fuse ssh

3. 그룹 퓨즈를 생성하고 로컬 사용자를 추가하십시오

그룹 만들기 : sudo groupadd fuse

그룹에 localuser를 추가하십시오. sudo usermod -a -G fuse $user

4. 퓨즈 설정에서 "allow_other"를 활성화

fstab에 마운트 할 때이 옵션이 필요합니다

/etc/fuse.conf명령 행 편집기로 편집 하십시오. 해시 태그를 제거 user_allow_other하고 저장하십시오.

5. 로컬 머신에서 SSH 키 생성

프롬프트가 표시되면 비밀번호를 제공하지 마십시오 . 비워 두려면 Enter를 누르십시오.

ssh-keygen -t rsa -C youremail@example.com

키는 로컬 컴퓨터 홈 디렉토리 /.ssh 폴더에 저장됩니다

6. 로컬 머신 공개 SSH 키를 원격 머신으로 전송

ssh-copy-id -i ~/.ssh/id_rsa.pub remoteuser@192.168.1.151

원격 컴퓨터에서 원격 사용자의 비밀번호를 묻는 메시지가 표시됩니다. 로컬 컴퓨터 공개 키가 이제 원격 컴퓨터의 ~ / .ssh / authorized_keys 파일에 추가되었습니다.

7. 원격 머신 / home 폴더를 마운트 할 로컬 머신 / mnt 폴더에 디렉토리를 작성하십시오.

원격 시스템에 적합한 이름을 선택하십시오.

sudo mkdir /mnt/devboxhome

8. 터미널에서 원격 머신 / home 디렉토리를 마운트하십시오.

sshfs의 구문은 다음과 같습니다.

sshfs [user@]host:[directory] mountpoint [options]

우리는 사용

sudo sshfs [remoteuser]@192.168.1.151:/home/[remoteuser] /mnt/devboxhome -o allow_other,default_permissions -o identityfile=/home/[localuser]/.ssh/id_rsa

예 : "steve"가 로컬 및 원격 시스템의 사용자 이름이라고 가정

sudo sshfs steve@192.168.1.151:/home/steve /mnt/devboxhome -o allow_other,default_permissions -o identityfile=/home/steve/.ssh/id_rsa

공개 RSA 키를 원격 시스템으로 전송 했으므로 원격 사용자 암호를 입력하라는 메시지가 표시되지 않아야합니다.

컴퓨터를 신뢰할 수 없으며 추가해야하는지 묻는 경고가 표시됩니다. 원격 시스템을 신뢰할 수있는 것으로 추가하십시오.

9. 확인 : 원격 시스템 / home 디렉토리 찾아보기

로컬 컴퓨터의 터미널에서 이제 / mnt / devboxhome 아래에 원격 컴퓨터 / home 디렉토리를 나열 할 수 있습니다.

cd /mnt/devboxhome ls

또는 노틸러스를 사용하여 디렉토리를 찾아보십시오. 큰.

10. 재부팅 후 재 연결 활성화

이를 수행하기 위해 / etc / fstab에 항목을 추가합니다. 로컬 컴퓨터 사용자 ID 그룹 ID가 필요합니다.이 정보를 놓치면 소개를 참조하십시오. 명령 행 편집기로 / etc / fstab을 편집하고 / etc / fstab의 끝에이 두 행을 추가하십시오.

# Mount devbox at boot remoteuser@192.168.1.151:/home/[remoteuser]/ /mnt/devboxhome fuse.sshfs default_permissions,user,delay_connect,reconnect,serversliveinterval=15,serveralivecountmax=3,allow_other,identityfile=/home/[localuser]/.ssh/id_rsa,idmap=user,uid=1000,gid=1000 0 0

  • delay_connect 는 네트워크가 작동 될 때까지 커널이 원격 시스템에 디렉토리를 마운트하려고 시도 할 때까지 기다립니다.
  • 부팅하는 동안 루트로 실행되므로 localuser 홈 디렉토리에 저장된 키 파일 을 지정해야합니다 .
  • allow_other- 실제 마운트를 수행하는 사용자 이외의 사용자는 마운트 된 파일 시스템에 액세스 할 수 있습니다.
  • idmap = user- 연결 사용자의 UID 만 번역
  • 다시 연결, ServersLiveInterval, ServerAliveCountMax -ssh는 연결 유지 핑을 보냅니다. 경우 ServerAliveCountMax연속 핑이 실패, 다시 연결합니다.

로컬 및 원격 시스템에서 steve로 로그인 한 사용자는 다음을 갖습니다.

steve@192.168.1.151:/home/steve/ /mnt/devboxhome fuse.sshfs default_permissions,user,delay_connect,reconnect,serversliveinterval=15,serveralivecountmax=3,allow_other,identityfile=/home/steve/.ssh/id_rsa,idmap=user,uid=1000,gid=1000 0 0

중요 : 원격 디렉토리 뒤의 슬래시 : steve@192.168.1.151 : / home / steve /

/ etc / fstab을 저장하고 ....

11. 재부팅

이제 로컬 컴퓨터 / mnt / devboxhome의 원격 컴퓨터 / home 디렉토리에 액세스 할 수 있어야합니다. 노틸러스에서는이 폴더를 장소 표시 줄로 끌어 올 수 있습니다.

12. 반복

원격 시스템에서 동일한 단계를 다시 수행하여 로컬 시스템의 / home 디렉토리를 공유하십시오.


좋은 대답입니다. 나는 fstab에 sshfs 파일 시스템을 마운트 할 수 있다는 것을 알지 못했습니다.
유기 대리석

0

내 파일 공유 방법 :

sudo npm install -g http-server

공유하려는 폴더로 이동하여 터미널을 열고 다음 명령을 실행하십시오.

http-server -o 

해당 명령의 출력에서 ​​언급 한 IP 주소의 동일한 네트워크에있는 모든 컴퓨터의 해당 폴더에 액세스 할 수 있습니다.


0

zx81roadkill 이 맞습니다. "sshfs"를 사용하십시오. 삼바는 쓰레기, NFS는 쓰레기입니다. Sshfs는 캘리포니아의 내 컴퓨터에서 아르헨티나의 컴퓨터로 전적으로 사용할 수 있습니다. 그것은 완전히 안전합니다. 다른 것만 큼 빠릅니다 (기가비트 라인이 있습니다).

Sshfs는 Samba 및 NFS에 비해 상대적으로 새로운 사용자이지만 어느 것보다 훨씬 우수합니다. 다음은이를 실행하는 예입니다 (모든 패키지가 설치되어 있다고 가정)

# mount "username"'s home directory on "machine"
  mkdir -p /tmp/my_mount ; sshfs username@machine: /tmp/my_mount
# mount the root directory on "machine" (note: if "username" on "machine"
# can't write to the file, neither will you.  You have "username"'s privs
  mkdir -p /tmp/my_mount ; sshfs username@machine:/ /tmp/my_mount
# mount the directory "Videos" on "username"'s account on "machine"
  mkdir -p /tmp/my_mount ; sshfs username@machine:Videos /tmp/my_mount

비밀번호를 입력하면 / tmp / my_mount는 "machine"에있는 "username"의 모든 파일을 포함합니다. 삼바 또는 NFS로 장난 치지 마십시오. 그것들은 구성이나 설정에 대한 엉덩이에 무의미한 고통 일뿐입니다.

마운트를 해제하려면

fusermount -u /tmp/my_mount

그리고 그것이 실패하면 (어떤 이유로 든) :

umount -f /tmp/my_mount

탑재 지점을 통해 전송 된 모든 데이터는 암호화됩니다. 이것이 원격 시스템에 마운트하는 표준이 아닌 전적으로 받아 들여진 방법이 아닌 이유는 미스터리입니다. 단순성 측면에서 다른 방법보다 훨씬 우수합니다.

원시 속도가 필요한 경우 부풀린 정크 삼바 조각이 NFS를 처리합니다. 잘 모르겠습니다 .100MB / s +가 충분합니다.

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