起動するたびに、sshfs
を使用してリモートディレクトリをマウントします。これらの短いコマンドを.bashrcに入れることを考えていますが、それはTheRightWay™ではないようです。
ログイン時にsshfs
を実行する適切な方法は何ですか?
確かに、 .bashrc
は正しくありません 。そのファイルは、インタラクティブシェルを実行しているターミナルを開くときに読み取られます(シェルがbashの場合)。
起動時にsshfsマウントを実行できますが、これは対話型認証が必要ない場合にのみ機能します。ほとんどのセットアップでは、これはパスワードなしのキーを意味します。 (他の方法もありますが、それらは通常、NFSのようなものがすでにある信頼できるネットワーク内でのみ適用されます。)
Rootの場合、エントリを /etc/fstab
に追加できます。これは、ルートの~/.ssh
を使用してキーと既知のホストを検索することに注意してください。
example.com:/remote/path /mount/point Fuse.sshfs idmap=user,uid=1234
@reboot
crontabエントリ を入力できます。
@reboot sshfs -o idmap=user example.com:/remote/path /mount/point
リモートサーバーに送信するためにパスワードを入力する必要がある場合は、最初にログインしてユーザーインターフェイスを使用できるようにする必要があります。キーをロック解除するためにパスワードを入力する必要がある場合も同様です。
ほとんどのウィンドウマネージャーとデスクトップ環境では、ログイン時にカスタムコマンドを実行できます。次のようなスニペットを実行できます(環境が既にSSHエージェントを開始していると仮定します。ほとんどの場合、最近実行されます)。
SSH_ASKPASS=ssh-askpass ssh-add ~/.ssh/id_rsa
mount | grep ' /mount/point ' ||
sshfs -o idmap=user example.com:/remote/path /mount/point
mount | grep ' /mount/point ' ||
は、複数の方法でログインした場合に、ファイルシステムがすでにマウントされているように見えるかどうかを確認します。または、エージェントを使用しない場合:
mount | grep ' /mount/point ' ||
SSH_ASKPASS=ssh-askpass sshfs -o idmap=user example.com:/remote/path /mount/point
ssh-askpass
プログラムがない場合、別の方法は、マウントを行うためだけにターミナルを開くことです。
xterm -e 'ssh-add ~/.ssh/id_rsa'
mount | grep ' /mount/point ' ||
sshfs -o idmap=user example.com:/remote/path /mount/point
テキストモードでログインするには、ssh-add
を~/.profile
に入れます。シェルがインタラクティブである場合にのみ実行してください。
case $- in
*i*)
ssh-add ~/.ssh/id_rsa
;;
esac
sshfs -o idmap=user example.com:/remote/path /mount/point
ブート時にファイルシステムをマウントする場合は、それらを/etc/fstab
。以下はOpenBSDのドキュメントの例です。リモートサーバーのNFSストレージでは、これを定期的に行っています。
10.0.0.1:/work /mnt nfs rw 0 0
その形式はうまく機能します。あなたのIPそしてあなたがマウントしたいディレクトリ。そして、それをリモートサーバーのどこにマウントするか。 fstab
は、マウント時にそれを行うための最良の方法です。または、起動時に実行できる小さなスクリプトを用意することもできます。
このユースケースでは、私は快適に afuse、Fuse
ベースのsshfsオートマウンターを使用します[1] 。
systemd のディストリビューションでは、afuse
userサービスユニットファイル ここの別の質問に投稿されているもののように を簡単に使用できます。
(re-)spawn afuseシェルスクリプトの数行の簡単な行)[2]~/.profile
。
[1]:afuse
は、Linuxのほとんどのディストリビューションのパッケージマネージャーで使用できます。
[2]:このリンクされたスクリプトは私の このセットアップをsystemd
ユーザーサービスに変えることについての質問 からのものです。