152

suまたはsudoまたはを実行する C シェル プログラムを作成していsshます。彼らは皆、標準入力やコマンドラインではなく、コンソール入力 (TTY) でパスワードを求めています。

誰かが解決策を知っていますか?

パスワードなしの設定sudoはオプションではありません。

はオプションかもしれませんが、私の簡素化されたシステムにはありません。

4

22 に答える 22

226

sudo には、標準入力からパスワードを受け入れるための -S オプションがあります。男性のエントリーは次のとおりです。

    -S          The -S (stdin) option causes sudo to read the password from
                the standard input instead of the terminal device.

これにより、次のようなコマンドを実行できます。

echo myPassword | sudo -S ls /tmp

sshに関しては、その使用法を自動化/スクリプト化しようと何度も試みましたが、成功しませんでした。プロンプトを表示せずにパスワードをコマンドに渡す組み込みの方法はないようです。他の人が述べたように、「expect」ユーティリティはこのジレンマに対処することを目的としているように見えますが、最終的には、これを自動化しようとするときに正しい秘密鍵認証を設定することが正しい方法です。

于 2010-12-01T17:27:26.380 に答える
37

ダイアログボックスでパスワードの入力を求める Applescript を作成し、次のようにカスタム bash コマンドを作成しました。

echo <password> | sudo -S <command>

これが役立つかどうかはわかりません。

sudo が事前に暗号化されたパスワードを受け入れると、スクリプト内でパスワードを暗号化でき、平文のパスワードがエコーされる心配がなくなります。ただし、これは私と私の状況で機能します。

于 2008-12-09T06:04:04.073 に答える
31

ssh使用できsshpassます。sshpass -p yourpassphrase ssh user@host

最初にsshpassをダウンロードするだけです:)

$ apt-get install sshpass
$ sshpass -p 'password' ssh username@server
于 2012-01-13T12:27:10.887 に答える
14

sudo の場合、これも実行できます。

sudo -S <<< "password" command
于 2015-06-09T14:12:18.673 に答える
12

私が持っている:

ssh user@host bash -c "echo mypass | sudo -S mycommand"

私のために働きます。

于 2011-01-07T16:36:04.900 に答える
11

この問題の通常の解決策は、スーパーユーザーアクセスを必要とするタスクを実行するヘルパーアプリをsetuidすることです:http: //en.wikipedia.org/wiki/Setuid

Sudoはオフラインで使用するためのものではありません。

後で編集:SSHは秘密公開鍵認証で使用できます。秘密鍵にパスフレーズがない場合は、パスワードの入力を求めずにsshを使用できます。

于 2008-10-24T12:07:15.080 に答える
10

これは、接続先のターゲット ホストで公開/秘密キーを設定することで実行できます。最初のステップは、次のコマンドを実行して、ローカル ホストでスクリプトを実行しているユーザーの ssh キーを生成することです。

ssh-keygen
Enter file in which to save the key (/home/myuser/.ssh/id_rsa): <Hit enter for default>
Overwrite (y/n)? y

次に、空白のパスワードを入力します。その後、接続先のターゲット ホストに ssh キーをコピーします。

ssh-copy-id <remote_user>@<other_host>
remote_user@other_host's password: <Enter remote user's password here>

ssh remote_user@other_hostssh キーを登録すると、ローカル ホストからサイレント モードを実行できるようになります。

于 2012-07-30T12:54:31.337 に答える
9

多分あなたはexpectコマンドを使うことができますか?:

expect -c 'spawn ssh root@your-domain.com;expect password;send "your-password\n";interact

そのコマンドは、パスワードを自動的に提供します。

于 2012-05-08T04:21:46.863 に答える
7

expectLinuxユーティリティを見てください。

stdinでの単純なパターンマッチングに基づいて、出力をstdioに送信できます。

于 2008-10-24T12:01:57.507 に答える
7

(他の人が示唆しているように)より良い選択がない場合、mansocatは次のことを支援できます。

   (sleep 5; echo PASSWORD; sleep 5; echo ls; sleep 1) |
   socat - EXEC:'ssh -l user server',pty,setsid,ctty

          EXEC’utes an ssh session to server. Uses a pty for communication
          between socat and ssh, makes it ssh’s  controlling  tty  (ctty),
          and makes this pty the owner of a new process group (setsid), so
          ssh accepts the password from socat.

pty、setsid、cttyの複雑さはすべて必要であり、長く眠る必要はないかもしれませんが、眠る必要があります。sshのコマンドラインでリモートコマンドを渡すのと同様に、echo=0オプションも一見の価値があります。

于 2011-09-15T21:30:21.723 に答える
1

キーに言い回しを付けずに、SSHを公開キー認証用に設定します。ネット上のガイドの負荷。その場合、ログインするのにパスワードは必要ありません。次に、クライアントのホスト名に基づいてキーの接続を制限できます。妥当なセキュリティを提供し、自動ログインに最適です。

于 2008-10-27T15:56:17.617 に答える
0
echo <password> | su -c <command> <user> 

これは機能しています。

于 2010-10-18T14:02:06.383 に答える
0

私も同じ問題を抱えていました。リモート PC にディレクトリを作成するためのダイアログ スクリプト。ssh との対話は簡単です。sshpass を使用します (以前にインストール済み)。

   dialog --inputbox "Enter IP" 8 78 2> /tmp/ip

   IP=$(cat /tmp/ip)


   dialog --inputbox "Please enter username" 8 78 2> /tmp/user

   US=$(cat /tmp/user)


   dialog --passwordbox "enter password for \"$US\" 8 78 2> /tmp/pass

   PASSWORD = $(cat /tmp/pass)


   sshpass -p "$PASSWORD" ssh $US@$IP mkdir -p /home/$US/TARGET-FOLDER


   rm /tmp/ip

   rm /tmp/user

   rm /tmp/pass

ドイツからのご挨拶

タイタス

于 2013-03-23T11:23:19.687 に答える
-1

1 つの方法は、read -s オプションを使用することです。この方法では、パスワード文字が画面にエコー バックされません。いくつかのユースケース用に小さなスクリプトを書きました。ブログで見ることができます: http://www.datauniv.com/blogs/2013/02/21/a-quick-little-expect-script/

于 2013-02-22T01:29:01.950 に答える
-1

使用する:

echo password | sudo command

例:

echo password | sudo apt-get update; whoami

それが役に立てば幸い..

于 2017-03-23T08:00:45.837 に答える
-3

スクリプトを期待するパラメータとしてパスワードを指定できます。

于 2008-10-24T12:07:16.997 に答える
-12
su -c "Command" < "Password"

お役に立てば幸いです。

于 2009-10-22T14:04:12.957 に答える