リモートサーバーからローカルマシンにダウンロードするbashスクリプトを開発しようとしています。私はrsyncを呼び出しますが、毎回自分でパスワードを指で触れないようにする必要があります。次の作品:
sshpass -p "my remote pw" rsync -r -n -t -v --progress -s myid@remote:/remote_path /local_path
質問は:それはどれほど危険ですか?より良い方法はありますが、実装するのに十分簡単です。ありがとう
これは、少なくともマルチユーザー環境では、あまり安全ではありません。 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
のようなロックを解除することができます(パスワードは暗号化されており、パスワードのロックを解除するための暗号化キーがパスワードです)ログインに使用します)。このように、パスワードを入力する必要はありません。私はこのような設定をいくつか持っていますが、残念ながら、私がそれをどのように行ったかを正確に思い出せません。とにかく、それはおそらくやり過ぎです。