私はsshfs
を使用して、いくつかのpython projects with ssh over ~/
ディレクトリ。
$ mkdir -p ~/mount/my-projects
$ sshfs [email protected]:/home/user/my-projects ~/mount/my-projects
期待どおりに、ほとんどのコマンドを実行できます。
$ ls ~/mount/my-projects
some-python-project
しかし、Sudo
を使用して何かを実行しようとすると、権限が拒否されて失敗します。
$ Sudo ls ~/mount/my-projects
ls: cannot access /home/user/mount/my-projects: Permission denied
私が実際に達成しようとしていることは、ローカルマシンでpythonパッケージインストールスクリプトをテストすることです。
$ cd ~/mount/my-projects/some-python-project
$ Sudo python setup.py install
Sshfsにはallow_other
オプションを使用する必要があると思います。これを行うには、次のようにSudoで呼び出す必要があります。
Sudo sshfs -o allow_other user@myserver:/home/user/myprojects ~/mount/myprojects
このオプションがないと、sshfsを実行したユーザーだけがマウントにアクセスできます。これはヒューズの制限です。 man Fuse
と入力すると、詳細情報が表示されます。
(少なくともUbuntuでは) 'Fuse'グループのメンバーである必要があることにも注意してください。そうでない場合、上記のコマンドは、 'Sudo'なしで実行すると/etc/Fuse.conf
にアクセスできないことを通知します。
sshfs
はユーザーランドプロセスなので、Sudo
で実行する必要はありません。
Sudoとして実行し、SSHキー認証を使用する場合、キーは/root/.ssh
の下で検索され、ユーザーの/home/myuser/.ssh
の下ではnotで検索されます。
sshfs
が使用できる~/.ssh/config
ファイルについても同様です。
次のような~/.ssh/config
がある場合:
Host remotehost
HostName 111.22.33.44
User root
Port 1234
IdentityFile ~/.ssh/id_rsa
次に、次のコマンドを使用して、通常のユーザーとしてリモートホストをマウントできます。
sshfs remotehost: local_dir
Rootで実行するには、-o IdentityFile /home/myuser/.ssh/id_rsa
を 'raw' sshfs
コマンドに追加するか、ユーザーのSSHキーへのフルパスで/root/.ssh/config
を作成します。
Host remotehost
HostName 111.22.33.44
User root
Port 1234
IdentityFile /home/myuser/.ssh/id_rsa
これでsshfs remotehost: local_dir
もルートの下で動作します。
.ssh/config
を配置すると、(リモートからローカルへ)scp -r remotehost:remotedir localdir
または(ローカルからリモートへ)scp -r localdir remotehost:remotedir
を使用して、ホスト間でフォルダ全体をコピーできるため、1回限りの操作で、sshfs
さえ必要ないかもしれません。
remotehost:remotedir
のように相対リモートパスを使用する場合、remotedir
はユーザーのホームフォルダからの相対パスになります。つまり、remotehost:remotedir
はremotehost:/home/myuser/remotedir
と同等です。
私の問題を解決したのは、allow_other
オプションを次のようにコマンドに追加します。
$ sshfs -o allow_other [email protected]:/home/user/my-projects ~/mount/my-projects
それからあなたはエラーを得るかもしれません:
オプションallow_otherは、/ etc/Fuse.confで 'user_allow_other'が設定されている場合にのみ許可され、お気に入りのテキストエディターで/etc/Fuse.confへの頭を解決し、コメントを外します(#を削除します)
user_allow_other
それで問題が解決し、sshfs
を正常に実行できた場合は、すばらしいです!そうでない場合は、次のコマンドでユーザーをFuseグループに追加してみてください。
$ usermod -a -G mark Fuse
fuseグループが存在しないというエラーが発生した場合は、次の方法で簡単にそのグループを作成できます。
$ Sudo groupadd mynewgroup