可能性のある複製:
SSH経由で接続し、公開鍵を使用せずに自動的にパスワードを入力します
DBのダンプを作成し、ファイルをあるサーバーから別のサーバーにコピーするbashスクリプトがありますが、接続する前に常にパスワードを要求します。
scp file.tar.gz [email protected]:/backup
パスワードをスクリプトに直接渡す方法はありますか?
ツールを使用 sshpass
sshpass -p 'password' scp file.tar.gz [email protected]:/backup
Rootを使用するのではなく、このジョブ専用のアカウントを作成してください。パスワードの代わりにパスフレーズなしの公開鍵を使用します。
scp -i /home/backupuser/.ssh/id_rsa [email protected]:/backup
宛先システムのバックアップに特別なアカウントを使用することにより、ルートパスワードを公開することはありません。
expect
のようなものを使用してログインプロセスにテキストを送信する方法を理解するよりも、sshをキーベースの認証を使用するように設定することをお勧めします。
を見てみましょう:
https://help.ubuntu.com/community/SSH/OpenSSH/Keys
したがって、基本的には、スクリプトを実行するマシンでssh-keygen -t dsa
を実行します。パスフレーズの入力を求められたら、Enterキーを押して空白を受け入れます。 2つのファイルを取得します。デフォルトの提案に従った場合、ファイルは〜/ .ssh/id_dsaおよび〜/ .ssh/id_dsa.pubになります。 1つ目は秘密鍵です。 2つ目は公開鍵です。
ssh-copy-id user@server2
を使用して、公開鍵を2番目のサーバーにコピーします。これにより、公開鍵がserver2上のユーザーのauthorized_keysファイルに追加されます。
これで、最初のマシンからsshを実行して、パスワードなしでログインできるようになります。
ファイルをコピーするには、scpまたはrsyncで問題ありません。それはあなたが何をしているかに依存します。 rsyncはデフォルトでsshを使用するため、設定したばかりの鍵ベースの認証を使用します。
セキュリティ上の理由から、パスワードのないssh-keysを使用しないでください。
ツール keychain
を使用すると、パスワードの入力を求められることなく、ssh-agentを再利用し、スクリプトでsshを介してrsyncを実行できます。
Ubuntuマシンにインストールするには、次のコマンドを実行します。
Sudo apt-get install keychain
使い方の詳細は キーチェーンのマンページ を確認してください。
scp
はSSH
を使用してリモートサーバーにトンネリングし、ファイルを転送します。 SSH
は、パスワード、SSH
キー、またはその両方でユーザーを認証できます(推奨)。
パスワードなしでファイルを転送するには、 create SSH
key 使用するユーザーに対して(rootはnot推奨。代わりに非特権ユーザーを使用し、ターゲットサーバーでrootとしてジョブを実行して特権アクションを実行します)。
次に、SSH
キー接続を受け入れるようにターゲットシステムのSSH
デーモンを構成する必要があります(上記のリンクにもあります)。
パスワードのない侵害されたSSH
キーは、侵害されたパスワードと同じであり、誰でも侵入できることに注意してください。実際のユーザーの場合、セキュリティを2倍にして、キーとパスワードを要求することをお勧めします。