web-dev-qa-db-ja.com

同じホームネットワーク上の別のLinuxマシンとフォルダーを共有するにはどうすればよいですか?

あるUbuntuマシン上のフォルダーを、同じホームネットワーク上の別のUbuntuマシンと共有しようとしています。フォルダーを右クリックして[共有オプション]を選択すると、フォルダーを共有するためにWindowsネットワーク共有サービスをインストールする必要があることが通知されます。 Windowsはこれと何の関係がありますか? Windowsマシンと共有しようとはしていません...

42
EmmyS

Windowsはこれと何の関係がありますか? Windowsマシンと共有しようとはしていません...

あなたは正しい、これは混乱する可能性があります。まず最初に用語を明確にしてみましょう。

Windowsがファイルとプリンターを共有する方法はSMBと呼ばれます。 SAMBAプロジェクトの人々は、MicrosoftのすべてのプロトコルとLinux仕様を実装しています。したがって、Ubuntuは、Sambaと呼ばれるWindowsと同じ種類のファイル共有をサポートしています。

  • SAMBAを使用して、Linuxマシン間でファイルを共有できます。実際、たとえば、友人と一緒にいる場合は、 Windowsコンピューター。

  • または、NFS(ネットワークファイルシステム)であるファイルを共有するLinuxの方法を使用できます- 前の質問に対するこの回答 方法を説明しますそれ。 (しかし、かなり技術的です)

そのため、[共有オプション]ダイアログでパッケージをインストールするように求められたとき、実際にはMicrosoftソフトウェアなどはインストールしていません。さあ、それをしてください、それは完全に安全です。

補遺:

Salih Eminの指示に従う前に、共有を有効にしてみてください。動作しない場合は、簡単な警告が表示されます。必要に応じて、Salihが説明する手順を実行できます。新しくインストールした最新のシステムで試してみましたが、実際にこれを行う必要がありました。

22
Stefano Palazzo

現在、Lunchidには、Launchpadにリストされている小さなバグ bug#536766 があります。このバグは、ファイル共有のセットアップを完了するために必要なパッケージをインストールするようユーザーに促しません。それが解決されるまで、ここに簡単な回避策があります。

libapache2-mod-dnssd をインストールして再起動する必要があります。このリンクをクリックしてインストールするか、ソフトウェアセンターでlibapache2-mod-dnssdを見つけます。

インストールしたら、System→Preferences→Personal file Sharingに移動して、 'public public files on network'ボックスをチェックします。

alt text

それがすべて完了すると、パブリックフォルダー内でパブリックファイルの共有を許可しているネットワーク上の他のすべてのコンピューターを表示できるようになります。 場所→ネットワークをクリックするだけで、利用可能なすべてのコンピューターとその共有パブリックフォルダーが表示されます。

サーバーアイコンをダブルクリックすると、関連するパブリックフォルダーがデスクトップにマウントされます。

リンクテキスト 経由

8
Salih Emin

LinuxマシンでsimpleHTTPサーバーを実行し、他のマシンで同じHTTPサーバーにアクセスできます。

手順:

  1. まず、共有するフォルダーからターミナルを起動します。
  2. ターミナルで実行-python -m SimpleHTTPServer
  3. ifconfigを使用してIPを確認してください。
  4. 他のマシンのブラウザにIPアドレス:8000を入力します(例:IPが127.3.4.123の場合、ブラウザに127.3.4.123:8000と入力します)

ダウンロードするフォルダーに必要なファイルを取得します。

5
John

「qweborf」をインストールできます。 HTTPを介してディレクトリを共有し、他のホストはブラウザでアクセスできるようになります。

また、webdavを有効にし、ディレクトリをファイルシステムの読み取り/書き込みとしてマウントできるようにすることもできます(davfs2、KDE、Gnome2、OsXでテスト済み)。

2
LtWorf

私はそれがSAMBAパッケージが下にリストされているか、それが説明の少なくとも一部であると信じています。別の方法として、別のメカニズムを使用すると思われる環境設定->ファイル共有を試すことができます。ただし、Sambaはインストールしておくと便利です。

2
Nerdfest

Ubuntuへのシームレスな統合が必要で、Windowsの互換性に関心がない場合は、SSHが最適です。

LAN経由で2台のLinuxマシン間でファイルを共有するにはどうすればよいですか? を参照してください。

SSHサーバーのインストールが必要になる場合があります。

Sudo apt-get install openssh-server

クライアントのファイルマネージャーアプリから、次の方法でサーバーにアクセスできます。

sftp://servername.local

端末またはプログラムからファイルにアクセスするには、sshfsを使用して、クライアントのファイルシステムにマウントポイントを作成します。

2
nobar

Linuxのみのネットワークの場合、SSHFSはネイティブで安定しており、非常に高速であることがわかりました。 SSH経由で/ homeフォルダーを共有する2つのXubuntuマシン(18.04)があります。

これをセットアップする方法sshfsfstabを使用して再起動後に自動的に再接続するパスワードを提供する必要はありません。 serverfault user kubanczyk に感謝します。リモートサスペンド/再開後に再接続する方法について。

接続元のコンピューターには「ローカルマシン-surfbox」を、接続先のコンピューターには「リモートマシン-devbox」を使用します。

以下の「remoteuser」をリモートマシンでログインするユーザー名に置き換え、「localuser」をローカルマシンでログインするユーザー名に置き換えます。ユーザー名を確認するには、リモートマシンとローカルマシンのターミナルにecho $USERと入力します。

また、userIDとgroupIDを確認してください。両方とも1000でなければなりません。

GroupID:id -g localuser UserID: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.グループFuseを作成し、それにlocaluserを追加します

グループを作成:Sudo groupadd Fuse

Localuserをグループに追加します:Sudo usermod -a -G Fuse $user

4. Fuse configで「allow_other」を有効にします

Fstabにマウントするときにこのオプションが必要になります

コマンドラインエディタで/etc/Fuse.confを編集します。 user_allow_otherの前のハッシュタグを削除して保存します。

5.ローカルマシンでSSHキーを生成する

プロンプトが出されたときにパスワードを入力しないでください。 Enterキーを押して空白のままにします。

ssh-keygen -t rsa -C [email protected]

キーはローカルマシンのホームディレクトリ/.sshフォルダーに保存されます

6.ローカルマシンの公開SSHキーをリモートマシンに転送します

ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]

リモートマシンのリモートユーザーのパスワードの入力を求められます。ローカルマシンの公開鍵が、リモートマシンの〜/ .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 [email protected]:/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

または、Nautilusを使用してディレクトリを参照します。すばらしいです。

10.再起動後の再接続を有効にする

これを実現するために、/ etc/fstabにエントリを追加します。ローカルマシンのユーザーIDとグループIDが必要です。これを見逃した場合は、イントロをご覧ください。コマンドラインエディタで/ etc/fstabを編集し、/ etc/fstabの最後にこれらの2行を追加します

# Mount devbox at boot [email protected]:/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は、リモートマシンにディレクトリをマウントしようとするまでネットワークが稼働するまでカーネルを待機させます。
  • ブート中にrootとして実行しているため、localuserホームディレクトリに保存されているkeyfileを指定する必要があります。
  • allow_other-実際のマウントを行うユーザー以外のユーザーは、マウントされたファイルシステムにアクセスできます。
  • idmap = user-接続しているユーザーのUIDのみを変換します
  • reconnect、ServersLiveInterval、ServerAliveCountMax-sshはキープアライブpingを送信します。 ServerAliveCountMax連続したpingが失敗した場合、再接続します。

ローカルマシンとリモートマシンにスティーブとしてログインするユーザーは次のようになります。

[email protected]:/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

重要:リモートディレクトリの後にスラッシュ:[email protected]:/ home/steve /

/ etc/fstabを保存して....

11.再起動

これで、ローカルマシンのリモートマシン/ homeディレクトリにアクセスできるはずです/ mnt/devboxhome Nautilusでは、このフォルダーをプレースバーにドラッグできます

12.繰り返し

リモートマシンで同じ手順を再度実行して、ローカルマシンの/ homeディレクトリを共有します。

2
zx81roadkill

zx81roadkillが正しい場合、「sshfs」を使用します。 Sambaはがらくたで、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」のすべてのファイルが含まれます。 SambaやNFSをいじってはいけません。それらは、構成またはセットアップのいずれかを行うのに意味のない痛みです。

アンマウントするには:

fusermount -u /tmp/my_mount

それが失敗した場合(何らかの理由で):

umount -f /tmp/my_mount

マウントポイントを介して送信されるすべてのデータは暗号化されます。なぜこれがリモートマシンへのマウントを行う標準の完全に受け入れられた方法ではないのかは、私には謎です。シンプルさの点で他のどの方法よりもはるかに優れています。

生の速度が必要な場合は、おそらく肥大化したジャンクSambaがそれを実行するか、NFSを実行します。わからない、100 MB/s +で十分だ。

0
Jiminy Idiot

ファイルを共有する私の方法:

Sudo npm install -g http-server

共有したいフォルダーに移動し、ターミナルを開いて次のコマンドを実行します。

http-server -o 

そのコマンドの出力で示されたIPアドレスで、同じネットワーク内のすべてのマシンのそのフォルダーにアクセスできます。

0
rehman_00001