プレーンテキストパスワードをパラメータとしてSSHログインしますか? [コピー]

プレーンテキストパスワードをパラメータとしてSSHログインしますか? [コピー]

Ubuntuを実行しているリモートホストに作成されたユーザーとしてログインする必要があります。sshSSHログインは、私がアクセスできないサーバー(Bambooなどの継続的な統合サーバーを考えてみてください)で実行されているbashスクリプトを介して行われるため、キーは使用できません。

ssh --passsword foobar user@host私はこれが理想的なことではないことを知っていますが、リモートホストでパスワードを要求しないように設定したり、MySQLがログインを許可する方法などのようなものを使用してログインできるようにしたいと思います。 。

私はこの問題を見つけられず、man sshこの問題に対する他の解決策を探しています。

答え1

Ubuntuはsshpassパッケージをインストールし、次のように使用します。

sshpass -p 'YourPassword' ssh user@host

sshpassファイルや環境変数からキーボードインタラクションパスワードを渡す機能もサポートされており、これはすべてのセキュリティ関連の状況でより適切なオプションになります。バラよりman sshpassもっと学ぶ。

答え2

パスワードをスクリプト、sshコマンドライン、またはプレーンテキストファイルに入力するオプションがある場合は、次のようにします。たくさんssh代わりに鍵を使用する方が良いです。いずれにしても、sshクライアントスクリプトが保存されているアカウントにアクセスできる人は誰でもそれを使用してサーバーに入ることができますが、少なくともOpenSSHが正しくサポートしているキーの場合は、次のsshアクセス権を付与できません。ssh、必要に応じて元に戻す方が簡単です。

SSHキーを使用しないように要求された理由を説明する必要があります。

また、クライアントがフルシェルを使用するのではなく、サーバーで必要なコマンドのみを実行できるように強制コマンド(command="..."ファイル内)を使用することも検討してください。.ssh/authorized_keys

答え3

まず、他の回答者と同様に、SSHキーのみを使用することをお勧めします。ただし、サーバーを制御する人がSSH鍵認証の使用をまったく許可しないと仮定し、パスワード認証を使用する必要があります。

ControlMasterとControlPathを使用できます。

Aをアクセスできないサーバー(Bambooなどの継続的な統合サーバーと考えています)のままにして、CをUbuntuを実行しているリモートホストのままにします。

それでは、Bがあなたが制御しているコンピュータだとしましょう。適切なBコンピュータを提供できない場合、この回答は機能しません。

  1. 鍵ペアを生成し、BのAuthorized_keysファイルに公開部分を追加します。秘密鍵をAに与えます。これで、パスワードなしでAからBにログインできます。
  2. Bを手動で開き、ssh -M -S /tmp/controlpath Cメッセージが表示されたらパスワードを入力します。これにより、パスワードなしでAからCにログインできますssh -S /tmp/controlpath C

Aのスクリプトではssh B ssh C dostuff

Bが再起動するたびに接続を再確立する必要がありますssh -M -S /tmp/controlpath C

関連情報