sshfs
起動するたびにリモートディレクトリをマウントするために使用します。私はこれらの短いコマンドを.bashrcに入れるつもりでしたが、正しい方法ではないようです™。
sshfs
ログイン時にこれを実行する正しい方法は何ですか?
答え1
もちろん、.bashrc
間違った。対話型シェル(シェルがbashの場合)を実行している端末を開くと、このファイルが読み込まれます。
起動時に sshfs マウントを実行できますが、これは対話型認証が必要ない場合にのみ機能します。ほとんどの設定では、これはパスワードキーがないことを意味します。 (他の方法もありますが、通常はNFSなどの機能が既に存在する信頼できるネットワーク内でのみ機能します。)
ルートであれば、アイテムを追加できます。
/etc/fstab
。これは、ルートを使用して~/.ssh
キーと既知のホストを検索します。example.com:/remote/path /mount/point fuse.sshfs idmap=user,uid=1234
一つ入れてもいい
@reboot
クローンタブ項目。@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
答え2
起動時にファイルシステムをマウントするには、そのファイルシステムを/etc/fstab
。私はリモートサーバーのNFSリポジトリでこれを定期的に実行します。
10.0.0.1:/work /mnt nfs rw 0 0
この形式はうまく機能します。あなたのIPとマウントしたいディレクトリ。次に、リモートサーバーの適切な場所にインストールします。fstab
インストール中にこれを行う最良の方法です。あるいは、起動時に実行される小さなスクリプトがあるかもしれません。
答え3
このユースケースでは簡単に使用できます。afuse、FUSE
sshfsベースの自動マウンター[1]。
ディストリビューションからシステムafuse
ユーザーサービスユニットファイルを簡単に使用できます。他の質問に投稿されたように。
(再)生成することもできます。ヒューズによって数行の単純なシェルスクリプト[2]~から~/.profile
。
[1]:afuse
ほとんどのLinuxディストリビューションのパッケージマネージャで利用可能です。
[2]:このリンクスクリプトは私ですこの設定をsystemd
ユーザーサービスに切り替える方法に関する質問。