Ubuntuを実行しているリモートホストに作成されたユーザーとしてログインする必要があります。ssh
SSHログインは、私がアクセスできないサーバー(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コンピュータを提供できない場合、この回答は機能しません。
- 鍵ペアを生成し、BのAuthorized_keysファイルに公開部分を追加します。秘密鍵をAに与えます。これで、パスワードなしでAからBにログインできます。
- 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
。