Sshfsとpam-mountを使用して、集中型ホームディレクトリサーバーをセットアップしようとしています。
現在、私はこの時点で立ち往生しています:
リモートホームディレクトリsshfsをマウントしようとすると、スタックします。
d_inevitable@laptop:~$ sshfs -o nonempty,debug server: .
Fuse library version: 2.9.0
nullpath_ok: 0
nopath: 0
utime_omit_ok: 0
この時点でフリーズします。
これは、ホームディレクトリに~/.ssh
が含まれているためと思われます。したがって、sshfs -o nonempty server:.ssh .ssh
を試してみると、同じことが起こります。
Fuseはどういうわけかマウントを初期化しますが、sshはconfigディレクトリから何かを必要とするので、そこから読み取ろうとします。ヒューズはその読み取りをブロックするだけで、デッドロックが発生します。
Sshfsは~/.ssh
からどのようなものを必要としますか?
~/.ssh
からすべての読み取り/書き込み権限を削除して、他のディレクトリにマウントしようとしました。それはうまくいきました。デバッグ出力は、.ssh/known_hosts
への書き込みについてのみエラーを出しました。
Fuseは最初にマウントを開始し、次にsshプロセスを開始します。デフォルトでは、sshはユーザーのホームから~/.ssh/ssh_config
、~/.ssh/known_config
、~/.ssh/id_*
ファイルを読み取るため、これにより問題が発生します。この動作は変更できます:
~/.ssh/ssh_config
は、デフォルトのユーザーごとの構成ファイルです。別のユーザーごとの構成ファイルは、-F
オプションを使用して指定するか、-F /dev/null
を使用してユーザーごとの構成ファイルを指定しないでください。~/.ssh/known_config
は、ホストキーの保存と確認に使用されます。 -o UserKnownHostsFile=/dev/null
を使用し、/etc/ssh/ssh_known_hosts
にホストキーを手動で追加するか、-o StrictHostKeyChecking=no
を使用できます。~/.ssh/id_*
ファイルは、デフォルトではクライアント認証に使用されるIDファイルです。 IDファイルを使用して認証する場合は、ホームディレクトリの外部に保管し、-o IdentitiesOnly=yes -o IdentityFile=<path to private key>
を使用する必要があります。または、-o IdentitiesOnly=yes -o IdentityFile=/dev/null -o PubkeyAuthentication=no
を使用する場合、インタラクティブに認証できます。たとえば、sshfsを使用してホームをマウントし、ホストキーチェックなしでパスワードを使用して認証するには、実行します
sshfs user@server: ~/ -o nonempty -F /dev/null -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o IdentitiesOnly=yes -o IdentityFile=/dev/null -o PubkeyAuthentication=no