web-dev-qa-db-ja.com

スクリプトを介してパスワードをSSHキーに渡します

すべてのサーバーから一度にファイルを取得できるスクリプトを作成しています。サーバーにログインするためのSSHキーを用意しています。ただし、SSHキーにはパスワードが必要です。

私が書いているスクリプトは自動化されず、手動でのみ実行されます。そのため、私のスクリプトはユーザーにSSHキーのパスワードの入力を求めます。

SSHキーが各サーバーに接続するときに、パスワードをSSHキーに送信するにはどうすればよいですか。サーバーごとにパスワードを入力する必要がないようにしています。

'expect'を使用できることはわかっていますが、これを行う簡単な方法があることを望んでいます。多分いくつかの環境変数?

ありがとう。

4
mhost

これにssh-agentを使用してみませんか?
詳細については、manページを参照してください。 :)

15
voretaq7

パスキーのないSSHキーを使用します。安全性は低いかもしれませんが、無人での使用を許可する方法には同じ欠陥があります。

1
Michael Munsey

これが私の2セントです!

  • 私はいつも私と一緒にいるUSBドライブを持っています(私の物理的なキーチェーンに)。
  • その中に5つの重要でないMBの2番目のパーティションを作成します。このパーティションは暗号化されたext4パーティションです。
  • 秘密鍵(パスキーなし)をその暗号化されたパーティションに保存します。
  • 私のコンピューターでは、このパーティションを復号化するためのパスワードをファイルマネージャーに保存しているので(私はイルカを使用しています)、USBドライブを接続すると、暗号化されたパーティションを2回クリックするだけでマウントでき、USBドライブを別のコンピューターに接続すると、パスワードを入力してマウントします。
  • 繰り返しますが、私のコンピューターでは、秘密鍵を通常(〜/ .ssh/id_rsa)からUSBドライブにマウントしたときの場所にシンボリックリンクしています。したがって、マウントすると、パスワードなしで通常のsshを作成できます。
  • 別のコンピューターを使用している場合は、キーがどこにあるかを-iフラグでsshに伝えることができます。

このように私はすることができます:

  • 日常のパソコンから快適にログイン
  • 任意のLinuxマシンから単一のパスワードでログインします
  • 秘密鍵を常に安全に保管し、暗号化されたファイルシステムに保管してください
0
dantefff

期待は最初に頭に浮かぶ解決策です...

このスクリプトの例を確認してください これは、探しているものに近いためです。

0
ewwhite

最も簡単な解決策は、パッケージsshpassをインストールし、次のように使用することです。
sshpass -p password ssh -i keyfile.pem user@server

0
Arash