SSH経由でスクリプトを実行するときに権限が拒否されました。

SSH経由でスクリプトを実行するときに権限が拒否されました。

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

[root@HostB ~]# ./myscript

すべてがうまく機能し、パッケージはパスワードを入力せずにscp経由でダウンロードされます。

このスクリプトを実行する必要がありsshます。

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

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

使用しようとすると、myscriptのコマンドが実行されたssh -tときにパスワードクエリが発生します。scp

答え1

回答="bash"を追加

SSHを介してマシンに接続し、Jenkinsfileでスクリプトを実行する方法:ファイルは、「/home/username/Shell Script Directory」ディレクトリにある「Shell Script.sh」です。

Jenkinsドキュメントから:

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

答え2

PasswordAuthentication私の考えは、あなたが「はい」に設定していないからだと思います。

PasswordAuthentication yes

sshd_configデバイスに追加してもう一度やり直してください。パスワードの入力を求められます。

別の解決策は、HostAからコンテンツをインポートしてHostBの~/.ssh/id_rsa.pubファイルに追加することです。~/.ssh/authorized_keys

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

ssh-copy-id HostB

答え3

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

ssh user@host command

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

答え4

それでもパスワードを入力するように求められています。 HostAからHostBにSSHを実行すると、パスワードの入力を求められますか?

その場合は、以下を含むようにssh_configファイル(RHEL / Centosの場合)を変更する必要があります。/etc/ssh/sshd_config

PasswordAuthentication no

yesに設定すると、PasswordAuthentication常にパスワードの入力を求められます。

関連情報