'sshfs password'
の配管 <<<
で -o password_stdin
まで bash で動作:
sshfs -o password_stdin [email protected]_ip:/home /mnt/backup <<< 'sshfs password'
マニュアルによると、オプション -o password_stdin
があります これにより、標準入力からパスワードを読み取ることができる可能性があります。これはおそらくリダイレクトである可能性があります。使ったことがないので推測です。
とはいえ、本質的に安全ではないこのようなソリューションは使用しないことを強くお勧めします。
ssh
秘密鍵/公開鍵のシステムで非常にうまく機能します。シンプルで安全です。パスワードを入力したり、シェルスクリプトに平文で書いたりする必要はありません。公開鍵をサーバーにプッシュするだけで、すぐに接続できます。
-o password_stdin
freeBSD など、すべてのシステムで動作しているようには見えません。等
expect
も使用できます インタプリタ、それは sshfs で動作し、そのトリックを行う必要があります。
別の解決策は sshpass
です たとえば、ディレクトリ /var/www をバックアップしているとします
バックアップ中:
name=$(date '+%y-%m-%d')
mkdir /backup/$name && tar -czvf /backup/$name/"$name.tar.gz" /var/www
バックアップ ファイルをバックアップ サーバーにアップロードしています
sshpass -p "your_password" scp -r [email protected]_ip:/home/ /backup/$name
したがって、今日のバックアップでディレクトリをアップロードします
でも それでも、より高く言われたように、最良の(安全でシンプルな)方法は、sshキーペアを使用することです
唯一の不便は、ペアリングする必要があるすべてのサーバーでキー生成プロセスを 1 回実行する必要があることですが、バックアップするすべてのサーバーでパスワードをプレーンテキスト形式で保持するよりはましです :),
適切な方法で鍵ペアを生成する
-
ローカル サーバー上
ssh-keygen -t rsa
-
リモートサーバー上
ssh [email protected]_servers_ip "mkdir -p .ssh"
-
生成された公開鍵をリモート サーバーにアップロードする
cat ~/.ssh/id_rsa.pub | ssh [email protected]_servers_ip "cat >> ~/.ssh/authorized_keys"
-
リモート サーバーに権限を設定する
ssh [email protected]_servers_ip "chmod 700 ~/.ssh; chmod 640 ~/.ssh/authorized_keys"
-
ログイン
ssh [email protected]_servers_ip
-
SSH プロトコル v2 を有効にする
<ブロック引用>/etc/ssh/sshd_config の「Protocol 2」のコメントを外します
-
sshd で公開鍵認証を有効にする
<ブロック引用>/etc/ssh/sshd_config の「PubkeyAuthentication yes」のコメントを外します
-
/etc/ssh/sshd_config で StrictModes が yes に設定されている場合、
restorecon -Rv ~/.ssh