1. ホーム
  2. linux

[解決済み] 純粋なbashでsshにパスワードを渡す

2022-03-05 02:20:53

質問

にパスワードを渡したい。 ssh bashスクリプトを使用しています(はい、私は私が使用することができるsshキーがあることを知っていますが、これは私が意図しているものではありません)。

を使用している解決策をいくつか見つけました。 expect が、bashの標準ツールではないので、パイプを使ってできないか考えています。

誰か説明してください、なぜこのようなことを正確に。

echo "password\n" | ssh somehost.com

または

ssh somehost.com <(echo "password\n")

は動作しないのですか?動作させる可能性はありますか?たぶん ssh を別プロセスとして、そのPIDを取得し、直接文字列を送信する?

解決方法は?

私の質問に対する正確な答えがなかったので、なぜ私のコードが動作しないのか、動作する他のソリューションがあるのかを調査し、このテーマを完了するために見つけたものを投稿することにしました。
結論から言うと

<ブロッククオート

ssh は TTY への直接アクセスを使用して、パスワードが確かに 対話型キーボードユーザーによって発行されたものです。 sshpass マニュアルページ

この場合、なぜパイプが機能しないのかという疑問の答えになります。明らかな解決策は、次のような条件を作成することでした。 ssh 通常の端末で実行されると思い、単純な posix 関数の範囲を超えており、単純な bash を提供します。