web-dev-qa-db-ja.com

パスワード認証でfstabを介してsshfsボリュームを自動マウント

Ubuntu 12.04.4を実行するヘッドレスサーバーがあり、ユーザーの介入なしに再起動後に再起動する必要があります。 sftp経由でリモートサーバー上のファイルを確認し、特定のファイルを操作することを含む既存の手動プロセスがあります。 sftpサイトの認証では、ユーザー名とパスワードを使用します。ファイルを必要とするサーバーにリモートボリュームを直接マウントして、sftpサーバーにアクセスする手動の手順を削除して、このプロセスを自動化したいと思います。

鍵ベースの認証が使用されていないため、ssh IDファイルがないことに注意してください。鍵認証を使用するようにリモートエンドを変更できません。既存のユーザー名とパスワードを使用する必要があります。私が見つけたほとんどのガイドは、キーベースのIDファイルの使用のみを扱っています。

現在のfstab構成:

sshfs#[email protected]:/SecureFTP /my/localpath Fuse allow_other,uid=root,gid=clientfiles,umask=0770

対話的にマウントする場合、パスワードの入力を求められます。誰かにベビーシッターをしてパスワードを入力しなくても、サーバーが再起動から回復できるようにしたいので、プロンプトなしで動作する必要があります。プロンプト以外の方法でパスワードを取得する方法がわかりません。理想的には、credentials=<file name>cifsオプションでできるように、ユーザー名とパスワードで資格情報ファイルを指定できます。

マウントオプションとしてcredentials=password=を試しましたが、sshfsに対して定義されていないようです。 Fuse: unknown optionを取得します。

IS sshfsのpassword_stdinオプションがありますが、それがfstabでどのように適用されるかはわかりません。

6
Chris Smith
  • この例では、私たちはrootとして作業することを暗黙に示しています。そうでない場合は、Sudo suまたはSudo(必要な場合)。
  • あなたのシステムはSystemdとは異なるinitシステムを使用するかもしれませんが、Cronはかなり普遍的です。

/etc/fstabマウントオプションなどを事前に定義します。

例:

USERNAME@HOSTNAME_OR_IP:/REMOTE/DIRECTORY /LOCAL/MOUNTPOINT Fuse.sshfs  defaults,password_stdin,_netdev 0 0

デフォルトのマウントオプションは完全とはほど遠いことに注意してください。
例:再接続が重要です。参照してください: https://github.com/libfuse/sshfs/issues/101

これらのオプションの例(Githubの問題から引用):

sshfs#[email protected]:/content/ /mnt/srv Fuse   password_stdin,defaults,user,allow_other,reconnect,delay_connect,ConnectTimeout=5,ServerAliveInterval=5,IdentityFile=/root/.ssh/id_rsa_storage 0 0

それが完了したら、次のような、この唯一のコンテンツを持つ簡単なスクリプトが必要です。

#!/bin/bash
echo "passwordgoeshere" | mount /mnt/srv

Rootユーザーの下に保存してみましょう。例:/root/mount_sshfs.sh
今、それを実行可能にする必要があります:chown +x /root/mount_sshfs.sh

これで、必要なのはcronまたはsystemdだけで、これをマウント時に実行します。
cronを使用すると、次のような簡単なエントリが機能します。
@reboot /root/mount_sshfs.sh

Systemdの場合:
1)スクリプトを作成する必要があります。上記を参照してください。
2)新しいSystemdサービススクリプトを作成する必要があります。
例は次のとおりです:/etc/systemd/system/mount_network.sh
3)ファイルの内容:

[Unit]
Wants=network-online.target
After=network-online.target

[Service]
ExecStart=/root/mount_sshfs.sh

[Install]
WantedBy=default.target

ノート:

  • Systemdメソッドはできる限り依存しないようにしていたため、テストしませんでした。それは個人的な嫌い/嫌い/嫌いです。 :)
  • Cronでは、スクリプトに「スリープ」を追加する必要がある場合があるため、スクリプトが「早すぎる」、つまりインターネット/ネットワークが起動する前に実行しないようにします。

ソース: https://linuxconfig.org/how-to-automatically-execute-Shell-script-at-startup-boot-on-systemd-linux

2
Apache