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
常にパスワードの入力を求められます。