(2016.1.29 追記あり)
sshfs を使ってデータの入っている NAS に接続する 編.
やろうとしていることのイメージ図.
ssh でつながった先にあるサーバにマウントされている NAS のデータを,Voyage から読む.
yjo.domain.net に ユーザ yjo で ssh 接続できることが前提.
公開鍵認証によるパスワードレス ssh 接続
ssh接続を公開鍵認証でパスワードレスで行うようにする.
まず,鍵を作る.
# ssh-keygen
passphrase はなし.これで /root/.ssh/ の下に id_rsa と id_rsa.pub が作成される.
id_rsa.pub を yjo.domain.net に転送しておく.
# scp /root/.ssh/id_rsa.pub yjo@yjo.domain.net:/home/yjo
yjo.domain.net にユーザ yjo でログインし,公開鍵を信頼できるキーに追加する.
yjo$ cat id_rsa.pub >> .ssh/authorized_keys
# nano /root/.ssh/config
中身は以下の通り.
Host yjo.domain.net
user root
Hostname yjo.domain.net
IdentityFile /root/.ssh/id_rsa
これで ssh で Voyage から yjo.domain.net にパスワードなしで接続できるはず.
# ssh yjo@yjo.domain.net
これでいきなり接続できることを確認.
ここからが今回のキモとなるところ.
音源データの入ったNASは,ssh で外からも接続できるようにしてあるサーバにマウントされている.そこで,sshfs を使って mpd マシンからこれをマウントして使うようにすれば,ssh接続の可能なところからならどこからでも使えるようになるはず,という作戦.
接続先のサーバのURLを yjo.domain.net とし,/mnt/NAS/music/mp3 以下を,mpd のデフォルトのデータディレクトリ /var/lib/mpd/music/ の下の mp3 にマウントする.このサーバにはユーザ yjo が ssh でログインでき,もちろん,yjo がデータディレクトリが読めるようになっている.
まず,sshfs と autofs をインストール.
# apt-get install sshfs
# apt-get install autofs
試した時点では最新版がすでにインストールされていた.これでautofsサービスもとりあえずスタートする (設定されていないのでこの時点では役に立たない).
/etc/auto.master の最後に次の行を追記.
/var/lib/mpd/music /etc/auto.sshfs --timeout 0 --ghost
これで,最初のディレクトリの下に,その後の指定に従ったディレクトリがマウントされるようになる.--timeout 0 は自動切断なし,--ghost はマウント前でもとりあえず当該名のディレクトリは見える状態になっている.細かい設定は /etc/auto.sshfs の方で.
/etc/auto.sshfs を作成.中身は,
mp3 -fstype=fuse,ro,allow_other :sshfs\#yjo@yjo.domain.net\:/mnt/NAS/music/mp3/
これで auto.master で指定したベースディレクトリの下に mp3 というサブディレクトリができ,その中身が yjo.domain.net の /mnt/NAS/music/mp3/ 以下となる.
autofs を再起動.
# /etc/init.d/autofs restart
ls で /var/lib/mpd/music/mp3 以下が見えることを確認.
これで mpd は認識できるはずなので,適当なクライアントからデータベースの構築をしてみる.
(2016.1.29追記)
autofs の方は timeout なしにしているが,データのやりとりが何もおこらないでいると,そもそもの ssh の方が切断されてしまうことがある.その結果,ポーズや停止の時間が長いとファイルが読めなくなることがおこる.これを抑止するために,定期的にサーバ側とパケットのやりとりを行う必要がある.これは /etc/ssh/ssh_config を修正して,以下の行を加えてやればよい.
ServerAliveInterval 30
これで30秒に1回,パケットのやりとりがおこって接続が維持される.
(nmuraoka師の示唆による)
0 件のコメント:
コメントを投稿