web-dev-qa-db-ja.com

sshfsは常にfstabでパスワードを要求しますか?

次の行を使用して/ etc/fstabにsshfsマウントを入力しようとしています。

sshfs#[email protected]:/media/usb0 /media/ExtHD Fuse     defaults,nonempty,allow_other 0 0

このボリュームがブート時にマウントされるようにします。起動後、何も起こりませんが、Sudo mount -aコマンドを使用すると、常にパスワードの入力を求められます。 SSHキーを設定して192.168.0.2のコンピューターに転送しました。パスワードを入力せずに通常のSSHにログインできます。ブート時にボリュームが自動的にマウントされるように、Fuseがパスワードを要求しないようにするにはどうすればよいですか?

それでも効果がある場合は、Arch Linuxを実行しているラップトップからDebianを実行しているホームサーバーに接続しようとしています。ありがとう

21
semiserious

鍵ベースの認証は、sshプロセスが鍵を見つけられる場合にのみ機能します。あなたはおそらくあなたのホームディレクトリにあなたの鍵を持っています。しかし、どこでキーを探すかをsshfsに伝えたことはありません。ブート時には、すべてのファイルシステムがrootマウントされるため、キーは/root/.sshにあるか、/root/.ssh/configで参照される必要があります。

ログイン後、自分のユーザーとしてファイルシステムをマウントすることをお勧めします。これを、ログイン時に実行されるスクリプトに入れます。

ssh-add ~/.ssh/name_of_key.id_rsa
sshfs homeserver:/media/usb0 ~/exthd

~/.ssh/confighomeserverというエイリアスを追加します。

Host homeserver
HostName 192.168.0.2
User oli

Ubuntu 14.04でfstabを介してsshfsをマウントできるようにしたのは、標準ユーザーとして次の構文を使用することです(CAPSの内容はすべてユーザーが入力する変数です)。

USER@Host:/REMOTE_DIR /LOCAL_DIR Fuse.sshfs delay_connect,_netdev,user,idmap=user,transform_symlinks,identityfile=/home/USERNAME/.ssh/id_rsa,allow_other,default_permissions,uid=USER_ID,gid=USER_GID 0 0

これは、ここにある情報の組み合わせです https://superuser.com/questions/669287/automount-sshfs-using-fstab-without-mount-adelay_connectここから https://askubuntu.com/questions/326977/sshfs-is-not-mounting-automatically-at-boot-despite-etc-fstab -設定

このチュートリアルを使用してUSER_IDとUSER_GIDを取得しました: https://kb.iu.edu/data/adwf.html

UnixでユーザーのUIDまたはGIDを見つけるには、idコマンドを使用します。特定のユーザーのUIDを見つけるには、Unixプロンプトで次のように入力します。

id -u username

Usernameを適切なユーザーのユーザー名に置き換えます。ユーザーのGIDを見つけるには、Unixプロンプトで次のように入力します。

id -g username

また、完全なチュートリアルが必要な場合は、 https://www.variux.com/sshfs-automount-at-boot-with-fstab-on-ubuntu-14-04/ に投稿されます。 =

10
variuxDavid

同じ問題がありました。

以前にssh-keygen、次にssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]でsshキーを設定していた

sshはパスワードを要求せずに正常に機能したため、sshfsが依然としてパスワードを必要としている理由について混乱しました...

つまり、

ssh [email protected] 

正常に動作しましたが、sshfsが入力時にパスワードを要求しました

Sudo sshfs [email protected]:/home/raspberry/Videos /home/pi/LinuxMintMountedFolder/ -o allow_other

上記のGillesが説明したように、sshfsはルートディレクトリで必要なキーを探していました。

したがって、ホームフォルダーの非表示の.sshフォルダーからルートの.sshフォルダーにid_rsaおよびid_rsa.pubファイルをコピーするだけでこれを解決しました。

cp /home/pi/.ssh/id_rsa /root/.ssh/
cp /home/pi/.ssh/id_rsa.pub /root/.ssh/

次に、次のように入力すると、パスワードを気にすることなく機能しました。

Sudo sshfs [email protected]:/home/raspberry/Videos /home/pi/LinuxMintMountedFolder/ -o allow_other
5
CMP

実際には、fstabではなくpassword_stdinオプションを使用して、起動時に公開鍵なしでSSHFSをマウントできます。

必要なのは、小さなスクリプトファイルとcronです。

公開鍵は常に良い選択であることに注意してください。しかし、公開鍵が機能しない場合があります(私自身も数回問題を抱えています)。スクリプトファイルには平文のパスワードが含まれることに注意してください。したがって、rootだけがこのファイルへのアクセス権を持っていることを確認してください。

スクリプトファイルは次のようになります(/root/automount.sh)。

#!/bin/sh
if [ $(mount | grep 'user@server:/folder' | wc -l) -ne 1 ]
then
    echo 'PASSWORD' | sshfs user@server:/folder /mnt/mountpoint -o password_stdin,allow_other
    echo 'SSHFS has been mounted.'
else
    echo 'SSHFS is already mounted.'
fi

起動時にこれを実行するには、crontabをrootとして使用して、次の行を入力します。

@reboot /root/automount.sh

上で述べたように、プレーンテキストのパスワードが含まれているため、誰もファイルを読み取れないようにする必要があります!

-rwx------ 1 root root 526 Nov 21 12:57 automount.sh

現在、再起動するたびに、システムは資格情報を使用してSSHFSを自動的にマウントします。

3
Nico

パスワードなしで起動したい場合は、パスワードなしで公開/秘密sshキーを作成する必要があります。これはお勧めできませんが、少なくともrootユーザーとしてchmod 400を使用してこれらのファイルを保護できます。

その後、通常どおり、公開鍵をマウントポイントにコピーする必要があります。

ssh-copy-id -i my_new_key.pub [email protected]

そして、このキーを使用するようにsshfsに指示する必要があります。

[email protected]:/media/usb0 /media/ExtHD Fuse     defaults,nonempty,allow_other,'IdentityFile /path/to/private/key' 0 0
3
Coren

Debian 8.2で完全に機能し、fstabに次の行を追加します。

user@hostname:/path/to/localmountpoint /path/to/remotemountpoint Fuse.sshfs _netdev,user,port=(if_not_22),idmap=user,transform_symlinks,identityfile=/home/user/.ssh/id_rsa,allow_other,default_permissions,uid=user_id,gid=group_id 0 0

ホスト名は、リモートサーバー(マウント元のフォルダー)のユーザーがローカルとリモートで同じであることを示します。 (より簡単に)

ssh-keygenを使用してユーザーのsshキーをローカルに作成していることを確認し、ssh-copy-idを使用してキーをリモートサーバー(ホスト名)にコピーします。

ローカルサーバーuser_idで、ユーザーのgroup_id/etc/passwdを見つけることができます。

また、ユーザーがpath/to/localmountpointフォルダーで読み取り/書き込み権限を持っていることを確認してください。

2
LincolnP

キーをサポートしていないサーバーに接続しようとしていて、それを自動化したい場合は、sshpassを使用して、sshfsを使用してもパスワードを入力できます。 fstabでもです。

たとえば、/etc/fstabに次のようなものを配置した場合:

sshfs#username@Host:/  /mnt/here   Fuse   auto,ssh_command=sshpass\040-f\040/root/.ssh/Host.password\040ssh  0  0

次に、/etc/fstabで指定されたファイル名にパスワードを入力します。

echo 'secret' > /root/.ssh/Host.password

sshpassがインストールされていることを確認してください:

pacman -S sshpass  # if you're using Arch Linux

その後、それはうまくいくはずです:

mount /mnt/here

最初にサーバーにsshしてキーを確認する必要があるかもしれませんが、その後これは手動の操作なしで機能し、autofstabフラグで機能するはずです。ブート時にマウントし、手動でパスワードを入力する必要はありません。

1
Malvineous

同じ問題があった。結局のところ、typeを単純なFuseに設定するか、(より可能性が高い)オプションを次のように切り捨てるのに役立ちました。

Fuse reconnect,idmap=user,allow_other,default_permissions

最後に私のために働いた

0
Kangur