SSHはスクリプトでそれを呼び出すときパスワードを尋ねます


0

私は1台のマスタと4台のスレーブコンピュータを持っています。私はマスターPCでrsaの公開鍵/秘密鍵を生成しました。それから私は公開鍵をコピーしました( id_rsa.pub )スレーブマシンに authorized_keys

私がマスターPCの端末で次のようにSSHを起動しても、パスワードは要求されません。

ssh –o UserKnownHostsFile=/dev/null –o StrictHostKeyChecking=no hduser@slave1 

私はパスワードを尋ねずに自動的にスレーブマシンにログインするためにこのスクリプトを書きました。

SERVER_LIST=`cat /home/hduser/slaves` # slave1, slave2 ...

for host in $SERVER_LIST; do
host=hduser@$host 
ssh –t –o UserKnownHostsFile=/dev/null –o StrictHostKeyChecking=no $host; 
done

このスクリプトを使用すると、SSHがスレーブパスワードを要求しています。でSSHを使うとこのメッセージが出ます -vv オプション:

debug1: ssh_ecdsa_verify: signature correct
debug2: kex_derive_keys
debug2: set_newkeys: mode 1
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug2: set_newkeys: mode 0
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug2: service_accept: ssh-userauth
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug2: key: /root/.ssh/id_rsa ((nil))
debug2: key: /root/.ssh/id_dsa ((nil))
debug2: key: /root/.ssh/id_ecdsa ((nil))
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: publickey
debug1: Trying private key: /root/.ssh/id_rsa
debug1: Trying private key: /root/.ssh/id_dsa
debug1: Trying private key: /root/.ssh/id_ecdsa
debug2: we did not send a packet, disable method
debug1: Next authentication method: password
hduser@slave1's password:

マスターPCとスレーブPCの権限を変更しました。

sudo chmod 755 /home/hduser    
sudo chmod 700 -R ~/.ssh
sudo chown hduser ~/.ssh

端末でSSHを起動したときにパスワードを要求しませんが、スクリプトで起動したときにパスワードを要求します。何が足りないの?どうすれば修正できますか?


1
スクリプトは誰で実行されていますか?何のユーザー?
Canadian Luke

ログには、スクリプトをrootとして実行していることが示されています。 SSHキーid_ *を生成してマスターの/root/.sshに保存しましたか?
ernie

hduser このスクリプトをMaster PC上でrootとして実行します。
Eyüp Alemdar

いいえ、で公開鍵/秘密鍵を生成しませんでした root。私はそれらを生成しました hduser ルートとして。 Master PCの端末でsshを起動しても正しく動作します。スクリプトでは動作しません。
Eyüp Alemdar

@ernieさん、コピー後に動作します id_rsa そして id_rsa.pub/home/hduser/.ssh/ ディレクトリ /root/.ssh/
Eyüp Alemdar

回答:


0

SSHログは、ログインセッションが/root/.ssh/で認証情報を探していることを示しています。これは、スクリプトがrootとして実行されていることを意味します。

id_ *ファイルを/root/.sshにコピーするか、適切な資格情報をrootとして生成するか、資格情報を保存したユーザーとしてスクリプトを実行します。


このディレクトリを変更する方法はありますか /root/.ssh//home/hduser/.ssh/
Eyüp Alemdar

はい、次のようにスクリプトを実行してください。 hduser suまたはsudo環境ではなく。 。
ernie
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.