web-dev-qa-db-ja.com

ssh経由でスクリプトを実行しているときにアクセスが拒否されました

scp経由でダウンロードし、いくつかのパッケージをインストールするスクリプトを作成しました。 SSHキーがホストに追加され、実行すると

[root@HostB ~]# ./myscript

すべてがOKで、パッケージはパスワードを要求せずにscp経由でダウンロードされます。

このスクリプトをssh経由で実行する必要がありますが、試してみると

[root@HostA ~]# ssh root@HostB "./myscript"

権限が拒否されました(公開鍵、パスワード)エラーが発生します。

ssh -tを使おうとすると、myscriptのscpコマンドの実行中に、パスワードの照会が行われます。

2
nars

Answer =「bash」を追加

コンピュータにSSHで接続し、Jenkinsfileからスクリプトを実行する方法:このファイルは、ディレクトリ「/ home/username/ShellScriptDirectory」にある「ShellScript.sh」と呼ばれます。

Jenkinsfileから:

sh "Sudo ssh -i /home/user/myPemFile.pem -o StrictHostKeyChecking=no -n [email protected] \"bash /home/username/Shell\\ Script\\ Directory/Shell\\ Script.sh\" "
1
Gene

許可が拒否されました(公開鍵、パスワード)エラー

スクリプトの権限とは何の関係もありません。 ssh接続の確立に失敗しています。最初にリモートシステムでシェルを取得してみてください。

ssh -vv root@HostB

ところで、sshを介してrootアカウントへの直接アクセスを許可することは一般的に良い考えではありません-そしてあなたが示したエラーは、sshdがPermitRootLogin = Noで構成されている場合に予想されるものです。これを解決する正しい方法は、適切なSudo権限を持つアカウントをプロビジョニングし、それを使用してコマンドを実行することです。

0
symcbean

スクリプト内でscpを使用してパッケージをダウンロードしているとのことです。あなたの問題はそのビットにあります。問題は、次の形式でsshを実行すると次のようになることです。

ssh user@Host command

...実行中のスクリプトに割り当てられた疑似端末はありません。 scpはパスワードの入力を求めようとしますが、そのための疑似端末が必要であるため、疑似端末がないと、アクセス許可拒否エラーが発生します(パスワード認証の試行の失敗が原因です)。 ssh -tを使用する場合、疑似端末があり、パスワードプロンプトが機能します。理解する必要があるのは、scpがリモートで実行されたときにパスワードの入力を求められるのに、インタラクティブなsshセッションから実行されたときではない理由です。それは別の質問です。

0
marcan

私の推測では、PasswordAuthenticationがyesに設定されていないためです。

PasswordAuthentication yes

これをマシンのsshd_configに追加して、再試行してください。これにより、パスワードの入力を求められます。

別の解決策は、HostAの~/.ssh/id_rsa.pubの内容を取得し、それをHostBのファイル~/.ssh/authorized_keysに追加することです。

パスワード認証が有効になっているので、次のコマンドを使用して許可されたキーをインストールできます。

ssh-copy-id HostB
0