8

Oozie SSH アクションの問題:

問題: クラスターの特定のホスト マシンでいくつかのコマンドを実行しようとしています。同じためにSSHアクションを選択しました。しばらくの間、この SSH の問題に直面してきました。ここで本当の問題は何でしょうか?解決策を教えてください。

ログ:

AUTH_FAILED: Not able to perform operation [ssh -o PasswordAuthentication=no -o KbdInteractiveDevices=no -o StrictHostKeyChecking=no -o ConnectTimeout=20 USER@1.2.3.4 mkdir -p oozie-oozi/0000000-131008185935754-oozie-oozi-W/action1--ssh/ ] | ErrorStream: Warning: Permanently added host,1.2.3.4 (RSA) to the list of known hosts. Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).

org.apache.oozie.action.ActionExecutorException: AUTH_FAILED: Not able to perform operation [ssh -o PasswordAuthentication=no -o KbdInteractiveDevices=no -o StrictHostKeyChecking=no -o ConnectTimeout=20 user@1.2.3.4 mkdir -p oozie-oozi/0000000-131008185935754-oozie-oozi-W/action1--ssh/ ] | ErrorStream: Warning: Permanently added 1.2.3.4,192.168.34.208 (RSA) to the list of known hosts. Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).

at org.apache.oozie.action.ssh.SshActionExecutor.execute(SshActionExecutor.java:589)
at org.apache.oozie.action.ssh.SshActionExecutor.start(SshActionExecutor.java:204)
at org.apache.oozie.command.wf.ActionStartXCommand.execute(ActionStartXCommand.java:211)
at org.apache.oozie.command.wf.ActionStartXCommand.execute(ActionStartXCommand.java:59)
at org.apache.oozie.command.XCommand.call(XCommand.java:277)
at org.apache.oozie.service.CallableQueueService$CompositeCallable.call(CallableQueueService.java:326)
at org.apache.oozie.service.CallableQueueService$CompositeCallable.call(CallableQueueService.java:255)
at org.apache.oozie.service.CallableQueueService$CallableWrapper.run(CallableQueueService.java:175)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)

Caused by: java.io.IOException: Not able to perform operation [ssh -o PasswordAuthentication=no -o KbdInteractiveDevices=no -o StrictHostKeyChecking=no -o ConnectTimeout=20 user@1.2.3.4 mkdir -p oozie-oozi/0000000-131008185935754-oozie-oozi-W/action1--ssh/ ] | ErrorStream: Warning: Permanently added '1.2.3.4,1.2.3.4' (RSA) to the list of known hosts. Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).

at org.apache.oozie.action.ssh.SshActionExecutor.executeCommand(SshActionExecutor.java:340)
at org.apache.oozie.action.ssh.SshActionExecutor.setupRemote(SshActionExecutor.java:373)
at org.apache.oozie.action.ssh.SshActionExecutor$1.call(SshActionExecutor.java:206)
at org.apache.oozie.action.ssh.SshActionExecutor$1.call(SshActionExecutor.java:204)
at org.apache.oozie.action.ssh.SshActionExecutor.execute(SshActionExecutor.java:547)
... 10 more

2013-10-09 12:48:25,982 WARN org.apache.oozie.command.wf.ActionStartXCommand: USER[user] GROUP[-] TOKEN[] APP[Test] JOB[0000000-131008185935754-oozie-oozi-W] ACTION[0000000-131008185935754-oozie-oozi-W@action1] Suspending Workflow Job id=0000000-131008185935754-oozie-oozi-W 2013-10-09 12:48:27,204 WARN org.apache.oozie.command.coord.CoordActionUpdateXCommand: USER[user] GROUP[-] TOKEN[] APP[Test] JOB[0000000-131008185935754-oozie-oozi-W] ACTION[0000000-131008185935754-oozie-oozi-W@action1] E1100: Command precondition does not hold before execution, [, coord action is null], Error Code: E1100 2013-10-09 12:59:57,477 INFO org.apache.oozie.command.wf.KillXCommand: USER[user] GROUP[-] TOKEN[] APP[Test] JOB[0000000-131008185935754-oozie-oozi-W] ACTION[-] STARTED WorkflowKillXCommand for jobId=0000000-131008185935754-oozie-oozi-W 2013-10-09 12:59:57,685 WARN org.apache.oozie.command.coord.CoordActionUpdateXCommand: USER[user] GROUP[-] TOKEN[] APP[Test] JOB[0000000-131008185935754-oozie-oozi-W] ACTION[-] E1100: Command precondition does not hold before execution, [, coord action is null], Error Code: E1100 2013-10-09 12:59:57,686 INFO org.apache.oozie.command.wf.KillXCommand: USER[user] GROUP[-] TOKEN[] APP[Test] JOB[0000000-131008185935754-oozie-oozi-W] ACTION[-] ENDED WorkflowKillXCommand for jobId=0000000-131008185935754-oozie-oozi-W 2013-10-09 13:41:32,654 WARN org.apache.oozie.command.wf.KillXCommand: USER[user] GROUP[-] TOKEN[] APP[Test] JOB[0000000-131008185935754-oozie-oozi-W] ACTION[-] E0725: Workflow instance can not be killed, 0000000-131008185935754-oozie-oozi-W, Error Code: E0725 2013-10-09 13:41:45,199 WARN org.apache.oozie.command.wf.KillXCommand: USER[user] GROUP[-] TOKEN[] APP[Test] JOB[0000000-131008185935754-oozie-oozi-W] ACTION[-] E0725: Workflow instance can not be killed, 0000000-131008185935754-oozie-oozi-W, Error Code: E0725 2013-10-09 13:42:04,869 WARN org.apache.oozie.command.wf.ResumeXCommand: USER[user] GROUP[-] TOKEN[] APP[Test] JOB[0000000-131008185935754-oozie-oozi-W] ACTION[-] E1100: Command precondition does not hold before execution, [workflow's status is KILLED is not SUSPENDED], Error Code: E1100 2013-10-09 13:45:56,357 WARN org.apache.oozie.command.wf.KillXCommand: USER[user] GROUP[-] TOKEN[] APP[Test] JOB[0000000-131008185935754-oozie-oozi-W] ACTION[-] E0725: Workflow instance can not be killed, 0000000-131008185935754-oozie-oozi-W, Error Code: E0725

Approached tried:

  1. Password-less SSH set
  2. User proxies set
  3. Giving permissions to the required folders

Thanks;

Kasa.

4

4 に答える 4

9

私はちょうど同様の問題に遭遇しました。USERとして実行できるケースがありました:

ssh -o PasswordAuthentication=no -o KbdInteractiveDevices=no -o StrictHostKeyChecking=no -o ConnectTimeout=20 USER@1.2.3.4 mkdir -p oozie-oozi/0000000-131008185935754-oozie-oozi-W/action1--ssh/

コマンドラインで手動で実行すると機能しましたが、Oozie を USER として起動すると失敗しました。

私の場合、失敗した理由は、oozie サーバーの USER とリモート マシンの USER の間にパスワードなしの ssh を設定したためです。必要なのは、oozie サーバー上の oozie とリモート マシン上の USER の間にパスワードなしの ssh をセットアップすることです。つまり、oozie サーバー上の oozie に su し、上記のコマンドを手動で実行します。失敗すると、Oozie で失敗します。動作する場合は、Oozie でも動作するはずです (ディレクトリのアクセス許可など、他のすべてが正しいと仮定します)。

Oozie サーバーが実行されているユーザーを確認します。

ps -ef | grep oozie

リモート マシン上の USER へのパスワードなしの ssh が必要なユーザー。

于 2013-10-24T21:00:18.987 に答える
1

quux00 が答えたものは何でも正しいです。私はそれにいくつかのポイントを追加しています。ssh-action のコマンド ssh は oozie ユーザーによって実行されるため、oozie を bash ユーザーとして設定する必要があります。

これを行うには、クラスターのすべてのノードで /etc/passwd ファイルを変更する必要があります。/etc/passwd ファイルで以下の値 (それに類似した値) を探します。

oozie:x:488:487:Oozie User:/var/lib/oozie:/bin/false 

そしてそれをに変更します

oozie:x:488:487:Oozie User:/var/lib/oozie:/bin/bash

これにより、実際に oozie ユーザーが bash ユーザーになります。次に、oozie ユーザーと、任意のホスト マシンで必要なその他のユーザーとの間のパスワードなしの認証に進みます。

その後、oozie ジョブを再実行してみてください。そして、それがうまくいくかどうか教えてください。それが役に立てば幸い!!!

于 2014-01-15T10:16:18.287 に答える
0

これは非常にトリッキーな問題で、ハックすることしかできませんでした。与えられた答えに満足できなかったので、ここに私のバージョンを示します。以下は失敗しました(ログで確認できました)

ssh -o PasswordAuthentication=no -o KbdInteractiveDevices=no -o StrictHostKeyChecking=no -o ConnectTimeout=20 user@XXX.XX.XX.XXX mkdir -p oozie-oozi/0000067-130808155814753-oozie-oozi-W/mysshjob--ssh/

ただし、同じコマンドを試しても KbdInteractiveDevices=no を削除するか KbdInteractiveDevices=pam を変更すると、機能しました

ssh -o PasswordAuthentication=no -o KbdInteractiveDevices=pam -o StrictHostKeyChecking=no -o ConnectTimeout=20 user@XXX.XX.XX.XXX mkdir -p oozie-oozi/0000067-130808155814753-oozie-oozi-W/mysshjob--ssh/

とにかく、古いsshキーに問題があったと思うので、フォローしてみましたが動作します

$ ssh-keygen -t dsa
$ cat ~/.ssh/id_dsa.pub > ~/.ssh/authorized_keys2
于 2014-02-20T15:06:42.993 に答える
-1

上記のすべての提案に従った後

oozie:x:488:487:Oozie User:/var/lib/oozie:/bin/false 

そしてそれをに変更します

oozie:x:488:487:Oozie User:/var/lib/oozie:/bin/bash

次の手順を試してください。

  1. 以下のプロセスを使用して、パスワードなしの通信を作成します。

    sudo su - oozie
    oozie@localhost: ssh-keygen -t dsa
    

    生成された公開鍵をローカルのリモートサーバーにコピーしますapps@XXXXXXX

  2. 試してみるとssh apps@XXXXXXX、エラーなしでリモートにログインできます

  3. HUEに移動してSSHアクションを選択し、BASHコマンドのようなbash -x yourscriptパラメーターを指定します
  4. 保存
  5. 参加する
于 2016-06-17T11:07:04.280 に答える