Ubuntuを実行しているリモートホストで作成したユーザーにログインする必要があります。 ssh
キーを使用できません。sshログインは、アクセスできないサーバー(Bambooなどの継続的インテグレーションサーバー)内で実行されるbashスクリプトから行われるためです。
これは理想的な方法ではないことを理解していますが、パスワードを要求しないようにリモートホストを設定するか、MySQLがログインに使用できるようなssh --passsword foobar user@Host
などでログインできるようにしたいのです。
私はこれをman ssh
で見つけることができず、この問題を回避するための代替手段を用意しています。
Ubuntuでsshpass
パッケージをインストールし、次のように使用します。
sshpass -p 'YourPassword' ssh user@Host
sshpass
は、ファイルまたは環境変数からキーボードインタラクティブパスワードを渡すこともサポートしています。これは、セキュリティが関連する状況では、より適切なオプションとなる場合があります。見る - man sshpass
詳細については。
スクリプト、ssh
コマンドライン、またはプレーンテキストファイルにパスワードを入力する方法がある場合、あなたは[〜#〜] much [〜 #〜]代わりにssh
キーを使用することをお勧めします。どちらの方法でも、ssh
クライアントスクリプトが保存されているアカウントにアクセスできるユーザーであれば、それを使用してサーバーにアクセスできますが、少なくともssh
キーの場合は、 OpenSSHはそれを適切にサポートしています。ssh
以外の方法でアクセス権を付与する必要はありません。必要に応じて、簡単に取り消すことができます。
Sshキーを使用しないという要件がある理由を説明する必要があります。
強制コマンド(command="..."
の中に .ssh/authorized_keys
file)を使用すると、クライアントは、完全なシェルではなく、サーバー上で必要なコマンドを実行するためのアクセス権のみを持つことができます。
まず、他の回答者と同様に、sshキーを使用することをお勧めします。ただし、サーバーを制御する人は、sshキー認証の使用を許可しないため、パスワード認証を使用する必要があると想定します。
ControlMasterとControlPathを使用できます。
Aをアクセス権のないサーバー(Bambooのような継続的インテグレーションサーバーと考えてください)とし、CをUbuntuを実行するリモートホストとします。
ここで、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
。