rsyncがパスワードの入力を求められない場合、sshpassを使用するのはどれほど安全ではありませんか?

rsyncがパスワードの入力を求められない場合、sshpassを使用するのはどれほど安全ではありませんか?

リモートサーバーからローカルコンピュータにダウンロードするためのbashスクリプトを開発しようとしています。私はrsyncを呼び出し、毎回パスワードを直接取得することを避けるべきです。以下はうまくいきます:

 sshpass -p "my remote pw" rsync -r -n -t -v --progress -s myid@remote:/remote_path /local_path

問題はこれがどれほど安全ではないかです。より良い方法がありますが、実装するのに十分簡単ですか?ありがとう

答え1

少なくともマルチユーザー環境ではそれほど安全ではありません。sshpass文書によると:

-pオプションは、すべてのsshpassオプションの中で最も安全でないオプションと見なす必要があります。すべてのシステムユーザーは、単純な「ps」コマンドを使用してコマンドラインでパスワードを表示できます。

第二に、スクリプトにパスワードをプレーンテキストとして保存する問題があります。これを行うには、少なくとも合理的な権限(700など)を設定する必要があります。

可能であれば、キーベースの認証を使用する必要があります。コンピュータに保存されているキーファイルが破損する可能性を減らすために、まだ予防措置を講じる必要がありますが、パスワードを公開するためにコマンドを実行する問題を排除し、追加のボーナスで秘密キーがより強力になる可能性が高くなります。パスワードよりも解読するのは難しいです。作業を簡単にするには、次~/.ssh/configのようにアイテムを作成できます。

Host mysite.com
    HostName mysite.com
    Port 22
    User me
    IdentityFile ~/.ssh/id_mysite.key

上記の項目を使用すると、コマンドを次のように変更できます。

rsync -r -n -t -v --progress -s mysite.com:/remote_path /local_path

~/.ssh必須ではありませんが、キーが浮かぶ可能性がある場所を制限し、ディレクトリは.ssh通常、より厳密な権限設定を持つため、すべてのキーを維持することをお勧めします。また、各キーファイルの権限を600に設定したので、より便利で~/.ssh後で忘れる可能性を減らすために、それを内部的にデフォルトのファイル権限に設定することを検討することができます。chmod

最後に、セキュリティを強化するには、秘密鍵をパスワードで保護し、ログイン時にロックを解除することがseahorseできます(パスワードは暗号化されており、ロックを解除する暗号鍵はログインに使用したパスワードだと思います)。これにより、パスワードを入力する必要がなくなります。このような設定はいくつかありますが、残念ながら何をしたのか覚えていません。とにかくこれは少し多いかもしれませんね。

関連情報