web-dev-qa-db-ja.com

SSH経由でリモートシェルスクリプトを実行し、そのスクリプトでそれを必要とするコマンドによってパスワードの入力を要求するにはどうすればよいですか?

このようなことをしたい

ssh [email protected] ./remote_script.sh

Remote_script.shの内容

#!/bin/bash
hg pull

この例は、私が実際に行っていることよりもはるかに単純です。 Shellコマンドをssh経由で直接渡すことができることはわかっていますが、リモートスクリプトを実行したいとします。また、Mercurialにはフックがあることも知っていますが、それも無視します。簡潔にするために、ここでは例としてMercurialのみを使用しています。

これは私が起こることを期待するものです、ユーザーのためのパスワードプロンプト:

[email protected] password: 

これは出力です:

ssh [email protected] ./remote_script.sh
remote: Permission denied, please try again.
remote: Permission denied, please try again.
remote: Permission denied (publickey,password).
abort: no suitable response from remote hg!

リモートシェルセッションは、パスワード入力プロンプトに何かを送り込んでおり、3回の自動試行の後に失敗しているようです。プロンプトがローカルのShellセッションに到達することを本当に望んでいます。おそらくそれは不可能です。

リポジトリにリモートサーバーキー認証を与えたくないので、毎回ユーザーにプロンプ​​トを表示したいと思います。これを行う方法はありますか?

4

この投稿から正確に何が起こっているのかを理解することは困難です。パスワードプロンプトはhgコマンドで出力されますか(私はhgに詳しくありません)?

-tオプションをsshに追加してみることをお勧めします。

ssh -t [email protected] ./remote_script.sh
9
MadScientist