この質問にはすでに回答があります:
コメント
回答
Ubuntuに、sshpass
パッケージの場合は、次のように使用します:
sshpass -p "YourPassword" ssh user@host
sshpass
また、ファイルまたは環境変数からのキーボードインタラクティブパスワードの受け渡しもサポートしています。これは、セキュリティが関連するあらゆる状況でより適切なオプションとなる可能性があります。詳細については、 man sshpass
を参照してください。
コメント
- 思考は推奨されておらず、良い習慣ではありません。これがまさに質問への答えです。上記のようにキーの使用を検討してください。しかし、'の主要な技術的問題がある場合、これが求められる解決策です
- 私は答えに賛成するだけです。 "合理的な理由ではありません'代わりに"が答えます。ただの答え。したがって、私はあなたに賛成しました:)
- 私はsshpassを完全に嫌いではありません'実際、私は'を使用しています一時的にそれ。ただし、' -p 'の使用は不要であり、望ましくありません。最初に変数SSHPASSを設定してから、sshpass -e ssh < ssh-args >を実行します。
- @Brad Ifボックスにrootがある場合は、
yum --enablerepo=epel install sshpass
を使用してsshpass
をインストールできます。
- この回答はManjaroでも機能します(アーチベース)。
回答
代わりに、スクリプトまたは
コマンドラインまたはプレーンテキストファイルの場合、 非常に 代わりに、ssh
キーを使用することをお勧めします。いずれにしても、ssh
クライアントスクリプトが保存されているアカウントにアクセスできる人は誰でもそれを使用してサーバーにアクセスすることはできますが、少なくともssh
キーの場合、OpenSSHはそれを適切にサポートし、ssh
、必要に応じて簡単に取り消すことができます…
sshキーを使用しない必要がある理由を説明する必要があります。
iv id = “で強制コマンド(command="..."
)を使用することも検討してください。 f47fc2c278 “>
ファイル)。これにより、クライアントは、完全なシェルではなく、サーバー上で必要なコマンドを実行するためのアクセス権のみを取得できます。
コメント
まず、他の回答者と同様に、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のスクリプトで