次のコマンドを使用して小さなバックアップスクリプトを作成していますsshfs
。
sshfs backup_user@target_ip:/home /mnt/backup
このコマンドにパスワードを含める方法はありますか?
それとも、FTP / SFTPに加えてログインパスワードを含めることができる他のファイル転送ソリューションはありますか?
答え1
'sshfs password'
次へ<<<
Bashで作業する-o password_stdin
:
sshfs -o password_stdin backup_user@target_ip:/home /mnt/backup <<< 'sshfs password'
パスワードは一重引用符で囲まれています。ありがとう、カイル!
答え2
-o password_stdin
freeBSDのようなすべてのシステムで動作していないようです。 sshfsと連携してトリックを実行する
インタプリタを使用することもできます。別の解決策は、例えば/var/wwwディレクトリをバックアップするとします。expect
sshpass
サポート:
name=$(date '+%y-%m-%d')
mkdir /backup/$name && tar -czvf /backup/$name/"$name.tar.gz" /var/www
バックアップサーバーへのバックアップファイルのアップロード
sshpass -p "your_password" scp -r backup_user@target_ip:/home/ /backup/$name
これにより、今日のバックアップを含むディレクトリがアップロードされます。
しかし、しかし、上記のように、最良の(安全で簡単な)方法はSSHキーペアを使用することです。
唯一の不便な点は、ペアリングする必要がある各サーバーでキー生成プロセスを一度だけ実行する必要があることですが、これがより優れています。バックアップしたいすべてのサーバーにパスワードをプレーンテキストで保存します:),
正しい方法でキーペアを生成する
ローカルサーバー上
ssh-keygen -t rsa
リモートサーバーから
ssh root@remote_servers_ip "mkdir -p .ssh"
生成された公開鍵をリモートサーバーにアップロード
cat ~/.ssh/id_rsa.pub | ssh root@remote_servers_ip "cat >> ~/.ssh/authorized_keys"
リモートサーバーの権限の設定
ssh root@remote_servers_ip "chmod 700 ~/.ssh; chmod 640 ~/.ssh/authorized_keys"
ログイン
ssh root@remote_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
答え3
マニュアルによると、-o password_stdin
標準入力からパスワードを読み取るためのオプションがあります。これはリダイレクトかもしれません。一度も書いたことがないので推測してみます。
つまり、本質的に安全ではないこのソリューションを使用しないことをお勧めします。
ssh
個人/公開鍵システムとうまく機能します。シンプルで安全です。パスワードを入力したり、シェルスクリプトにプレーンテキストで書く必要はありません。公開鍵をサーバーにプッシュしてすぐに接続します。
答え4
覚えておくべきことの1つは、その-o password_stdin
オプションを使用すると、sshfsが既知のホストにホストに接続するか(最初に接続して追加されていない場合)に尋ねるために機能しないように見えることです。ファイル)。一括実行すると、sshfsが尋ねたことを決して見ることができません。このような状況を防ぐための解決策は次のとおりです。
-o StrictHostKeyChecking=no
sshfsにオプションを追加する- 既知のホストファイルにホストを追加するには、手動でsshfsを一度実行します。