3

sshコマンドラインコマンドは、次のようなパスワードの入力をユーザーに求めます。

パスワード:

Cでは、私が行うとき:

system("ssh name@host");
system("password");

コマンドラインはユーザーにプロンプ​​トを表示し、プログラムからの入力を無視します。ユーザーが入力した入力を常に受け​​取るようです。stdoutに出力をリダイレクトし、sshのパスワードプロンプトにパイプする方法はありますか?

上記からsshをファイルポインタとして扱うまで、さまざまなことを試しました。

FILE *ssh = popen("ssh -t -t -S -o StrictHostKeyChecking=no name@host", "w");

次に、そのファイルポインタに書き込みますが、どれも機能していないようです。

4

3 に答える 3

3

それはそう。SSHは/dev/ttyそこから直接パスワードを開いて読み取るため、その方法で入力を渡す方法はありません。libssh2shipluが言ったように、を使用する以外に、その動作をオーバーライドする方法はわかりません。

于 2012-12-31T04:05:19.523 に答える
2

コーディングしているので、 libssh2C の使用を検討してください。この例を参照してください。

ここには他にも例があります

于 2012-12-31T04:04:10.423 に答える
0

問題を解決する別の方法があります-ssh-keygenそしてssh-copy-id

基本的に、公開鍵をホストに1回コピーします。その後の接続では、ssh自動的に秘密鍵を使用してログインします。

走る

ssh-keygen

Enterキーを3回押します。走る:

ssh-copy-id user@host

そして、パスワードを入力します。

それでおしまい。

于 2012-12-31T04:12:46.053 に答える