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でどのように適用されるかはわかりません。
Sudo su
またはSudo
(必要な場合)。/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
ノート:
ソース: https://linuxconfig.org/how-to-automatically-execute-Shell-script-at-startup-boot-on-systemd-linux