2014-03-06 12 views
3

我已經建立了一個與流浪漢的機器,併爲它創建了一個基本的Ansible劇本。 一切正常,當我運行「流浪者提供」的作品,但我不能發送與Ansible的特設命令

vm-abla> vagrant provision 

但我不能發送臨時命令將機器Ansible,這是爲什麼? 我強調了我認爲可能表明原因的那條線。

vm-abla> ansible jon -i provisioning/hosts -a "echo 'TEST'" -vvvv 

<192.168.33.2> ESTABLISH CONNECTION FOR USER: user 
<192.168.33.2> REMOTE_MODULE command echo 'TEST' 
<192.168.33.2> EXEC ['ssh', '-C', '-tt', '-vvv', '-o', 'ControlMaster=auto', '-o', 'ControlPersist=60s', '-o', 'ControlPath=/home/user/.ansible/cp/ansible-ssh-%h-%p-%r', '-o', 'KbdInteractiveAuthentication=no', '-o', 'PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey', '-o', 'PasswordAuthentication=no', '-o', 'ConnectTimeout=10', '192.168.33.2', "/bin/sh -c 'mkdir -p $HOME/.ansible/tmp/ansible-tmp-1394126994.26-73015876561126 && chmod a+rx $HOME/.ansible/tmp/ansible-tmp-1394126994.26-73015876561126 && echo $HOME/.ansible/tmp/ansible-tmp-1394126994.26-73015876561126'"] 

192.168.33.2 | FAILED => SSH encountered an unknown error. The output was: 
OpenSSH_6.0p1 Debian-4, OpenSSL 1.0.1e 11 Feb 2013 
debug1: Reading configuration data /etc/ssh/ssh_config 
debug1: /etc/ssh/ssh_config line 19: Applying options for * 
debug1: auto-mux: Trying existing master 

### debug1: Control socket "/home/user/.ansible/cp/ansible-ssh-192.168.33.2-22-user" does not exist 

debug2: ssh_connect: needpriv 0 
debug1: Connecting to 192.168.33.2 [192.168.33.2] port 22. 
debug2: fd 3 setting O_NONBLOCK 
debug1: fd 3 clearing O_NONBLOCK 
debug1: Connection established. 
debug3: timeout: 10000 ms remain after connect 
debug3: Incorrect RSA1 identifier 
debug3: Could not load "/home/user/.ssh/id_rsa" as a RSA1 public key 
debug1: identity file /home/user/.ssh/id_rsa type 1 
debug1: Checking blacklist file /usr/share/ssh/blacklist.RSA-2048 
debug1: Checking blacklist file /etc/ssh/blacklist.RSA-2048 
debug1: identity file /home/user/.ssh/id_rsa-cert type -1 
debug3: Incorrect RSA1 identifier 
debug3: Could not load "/home/user/.ssh/id_dsa" as a RSA1 public key 
debug1: identity file /home/user/.ssh/id_dsa type 2 
debug1: Checking blacklist file /usr/share/ssh/blacklist.DSA-1024 
debug1: Checking blacklist file /etc/ssh/blacklist.DSA-1024 
debug1: identity file /home/user/.ssh/id_dsa-cert type -1 
debug3: Incorrect RSA1 identifier 
debug3: Could not load "/home/user/.ssh/id_ecdsa" as a RSA1 public key 
debug1: identity file /home/user/.ssh/id_ecdsa type 3 
debug1: Checking blacklist file /usr/share/ssh/blacklist.ECDSA-256 
debug1: Checking blacklist file /etc/ssh/blacklist.ECDSA-256 
debug1: identity file /home/user/.ssh/id_ecdsa-cert type -1 
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.9p1 Debian-5ubuntu1.1 
debug1: match: OpenSSH_5.9p1 Debian-5ubuntu1.1 pat OpenSSH_5* 
debug1: Enabling compatibility mode for protocol 2.0 
debug1: Local version string SSH-2.0-OpenSSH_6.0p1 Debian-4 
debug2: fd 3 setting O_NONBLOCK 
debug3: load_hostkeys: loading entries for host "192.168.33.2" from file "/home/user/.ssh/known_hosts" 
debug3: load_hostkeys: found key type ECDSA in file /home/user/.ssh/known_hosts:10 
debug3: load_hostkeys: loaded 1 keys 
debug3: order_hostkeyalgs: prefer hostkeyalgs: [email protected],[email protected],[email protected],ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521 
debug1: SSH2_MSG_KEXINIT sent 
debug1: SSH2_MSG_KEXINIT received 
debug2: kex_parse_kexinit: ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1 
debug2: kex_parse_kexinit: [email protected],[email protected],[email protected],ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,[email protected],[email protected],[email protected],[email protected],ssh-rsa,ssh-dss 
debug2: kex_parse_kexinit: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,[email protected] 
debug2: kex_parse_kexinit: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,[email protected] 
debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,[email protected],hmac-sha2-256,hmac-sha2-256-96,hmac-sha2-512,hmac-sha2-512-96,hmac-ripemd160,[email protected],hmac-sha1-96,hmac-md5-96 
debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,[email protected],hmac-sha2-256,hmac-sha2-256-96,hmac-sha2-512,hmac-sha2-512-96,hmac-ripemd160,[email protected],hmac-sha1-96,hmac-md5-96 
debug2: kex_parse_kexinit: [email protected],zlib,none 
debug2: kex_parse_kexinit: [email protected],zlib,none 
debug2: kex_parse_kexinit: 
debug2: kex_parse_kexinit: 
debug2: kex_parse_kexinit: first_kex_follows 0 
debug2: kex_parse_kexinit: reserved 0 
debug2: kex_parse_kexinit: ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1 
debug2: kex_parse_kexinit: ssh-rsa,ssh-dss,ecdsa-sha2-nistp256 
debug2: kex_parse_kexinit: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,[email protected] 
debug2: kex_parse_kexinit: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,[email protected] 
debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,[email protected],hmac-sha2-256,hmac-sha2-256-96,hmac-sha2-512,hmac-sha2-512-96,hmac-ripemd160,[email protected],hmac-sha1-96,hmac-md5-96 
debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,[email protected],hmac-sha2-256,hmac-sha2-256-96,hmac-sha2-512,hmac-sha2-512-96,hmac-ripemd160,[email protected],hmac-sha1-96,hmac-md5-96 
debug2: kex_parse_kexinit: none,[email protected] 
debug2: kex_parse_kexinit: none,[email protected] 
debug2: kex_parse_kexinit: 
debug2: kex_parse_kexinit: 
debug2: kex_parse_kexinit: first_kex_follows 0 
debug2: kex_parse_kexinit: reserved 0 
debug2: mac_setup: found hmac-md5 
debug1: kex: server->client aes128-ctr hmac-md5 [email protected] 
debug2: mac_setup: found hmac-md5 
debug1: kex: client->server aes128-ctr hmac-md5 [email protected] 
debug1: sending SSH2_MSG_KEX_ECDH_INIT 
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY 
debug1: Server host key: ECDSA 32:53:5d:95:d9:2b:c0:92:ab:1d:a4:87:95:a6:5a:e2 
debug3: load_hostkeys: loading entries for host "192.168.33.2" from file "/home/user/.ssh/known_hosts" 
debug3: load_hostkeys: found key type ECDSA in file /home/user/.ssh/known_hosts:10 
debug3: load_hostkeys: loaded 1 keys 
debug1: Host '192.168.33.2' is known and matches the ECDSA host key. 
debug1: Found key in /home/user/.ssh/known_hosts:10 
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: /home/user/.ssh/id_rsa (0x7fa1272d15d0) 
debug2: key: /home/user/.ssh/id_dsa (0x7fa1272d1610) 
debug2: key: /home/user/.ssh/id_ecdsa (0x7fa1272cd270) 
debug1: Authentications that can continue: publickey,password 
debug3: start over, passed a different list publickey,password 
debug3: preferred gssapi-with-mic,gssapi-keyex,hostbased,publickey 
debug3: authmethod_lookup publickey 
debug3: remaining preferred: ,gssapi-keyex,hostbased,publickey 
debug3: authmethod_is_enabled publickey 
debug1: Next authentication method: publickey 
debug1: Offering RSA public key: /home/user/.ssh/id_rsa 
debug3: send_pubkey_test 
debug2: we sent a publickey packet, wait for reply 
debug1: Authentications that can continue: publickey,password 
debug1: Offering DSA public key: /home/user/.ssh/id_dsa 
debug3: send_pubkey_test 
debug2: we sent a publickey packet, wait for reply 
debug1: Authentications that can continue: publickey,password 
debug1: Offering ECDSA public key: /home/user/.ssh/id_ecdsa 
debug3: send_pubkey_test 
debug2: we sent a publickey packet, wait for reply 
debug1: Authentications that can continue: publickey,password 
debug2: we did not send a packet, disable method 
debug1: No more authentication methods to try. 
Permission denied (publickey,password). 

閱讀this page故障排除部分之後,我自己也嘗試加入這個在命令結束時,具有非常相似的結果使用流浪的SSH密鑰:

-c ssh --private-key=~/.vagrant.d/insecure_private_key 

的任何想法發生了什麼問題? 謝謝

編輯:啊!我設法使用SSH登錄到機器,但我必須聲明,我是用戶「流浪者」在虛擬機上,像這樣:

ssh [email protected] 

所以,現在這個工程,我怎麼可能做同樣的有理由嗎? (或者這會不會是一個好的解決方案?)

回答

6

由於@mascip已經自我回答,您需要告訴ansible:inventory_file,ssh_user和ssh_private_key。 (我不認爲需要設置-c ssh。)

「優雅的方式」是將所有這些設置放入項目特定的ansible.cfg文件中。然後你可以運行ansible jon -a "echo 'TEST'"

一個「問題」是ansible.cfg必須與您運行ansible命令的位置在同一個目錄中。我喜歡將ansible.cfg放在我的可信目錄下,這意味着我需要首先在cd之前。如果你想從你的項目根目錄下運行ansible,那麼改爲放置ansible.cfg(並在下面的示例配置文件中調整相對路徑)。

ansible.cfg:

[defaults] 

remote_user = vagrant 
private_key_file = ~/.vagrant.d/insecure_private_key 

# aka inventory file 
hostfile = ../.vagrant/provisioners/ansible/inventory/vagrant_ansible_inventory 
+1

由於流浪v1.7.3,私鑰文件存儲在生成清單文件,併爲每個主機唯一的,所以不要在你的'ansible.cfg'硬編碼。 – conorsch

1

我管理:

vm-abla> ansible jon -i provisioning/hosts -a "echo 'TEST'" -vvvv -c ssh --user=vagrant --private-key=~/.vagrant.d/insecure_private_key 

但是,如果有人有一個更優雅的或安全的解決方案,我很感興趣。

相關問題