Я пытаюсь запустить это просто сценарий подготовки но при запуске возникают ошибки vagrant up
а потом vagrant provision
команды.
Я читал, что мне нужно было создать /etc/ansible/hosts
файл, который я сделал, заполнив его:
[vagrant]
192.168.222.111
Моя конфигурация SSH (некоторые детали удалены):
Host default
HostName 127.0.0.1
User vagrant
Port 2222
UserKnownHostsFile /dev/null
StrictHostKeyChecking no
PasswordAuthentication no
IdentityFile /Users/ashleyconnor/.vagrant.d/insecure_private_key
IdentitiesOnly yes
LogLevel FATAL
Host server
HostName XXX.XXX.XXX.XXX
User ash
PreferredAuthentications publickey
IdentityFile ~/.ssh/ash_ovh
Host deployer
HostName XXX.XXX.XXX.XXX
User deployer
PreferredAuthentications publickey
IdentityFile ~/.ssh/deployer_ovh
Host bitbucket.org
PreferredAuthentications publickey
IdentityFile ~/.ssh/bitbucket
Host github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/github
Host staging
HostName 192.168.56.10
User deployer
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Выходные данные SSH, которые я получаю, похоже, перебирают все мои ключи:
<192.168.222.111> ESTABLISH CONNECTION FOR USER: vagrant
<192.168.222.111> REMOTE_MODULE setup
<192.168.222.111> EXEC ['ssh', '-C', '-tt', '-vvv', '-o', 'ControlMaster=auto', '-o', 'ControlPersist=60s', '-o', 'ControlPath=/Users/ashleyconnor/.ansible/cp/ansible-ssh-%h-%p-%r', '-o', 'IdentityFile=/Users/ashleyconnor/.vagrant.d/insecure_private_key', '-o', 'KbdInteractiveAuthentication=no', '-o', 'PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey', '-o', 'PasswordAuthentication=no', '-o', 'User=vagrant', '-o', 'ConnectTimeout=10', '192.168.222.111', "/bin/sh -c 'mkdir -p $HOME/.ansible/tmp/ansible-tmp-1394317116.44-226619545527061 && chmod a+rx $HOME/.ansible/tmp/ansible-tmp-1394317116.44-226619545527061 && echo $HOME/.ansible/tmp/ansible-tmp-1394317116.44-226619545527061'"]
fatal: [192.168.222.111] => SSH encountered an unknown error. The output was:
OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011
debug1: Reading configuration data /Users/ashleyconnor/.ssh/config
debug1: Reading configuration data /etc/ssh_config
debug1: /etc/ssh_config line 20: Applying options for *
debug1: /etc/ssh_config line 53: Applying options for *
debug1: auto-mux: Trying existing master
debug1: Control socket "/Users/ashleyconnor/.ansible/cp/ansible-ssh-192.168.222.111-22-vagrant" does not exist
debug2: ssh_connect: needpriv 0
debug1: Connecting to 192.168.222.111 [192.168.222.111] 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 "/Users/ashleyconnor/.vagrant.d/insecure_private_key" as a RSA1 public key
debug1: identity file /Users/ashleyconnor/.vagrant.d/insecure_private_key type -1
debug1: identity file /Users/ashleyconnor/.vagrant.d/insecure_private_key-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.2
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.9p1 Debian-5ubuntu1
debug1: match: OpenSSH_5.9p1 Debian-5ubuntu1 pat OpenSSH_5*
debug2: fd 3 setting O_NONBLOCK
debug3: load_hostkeys: loading entries for host "192.168.222.111" from file "/Users/ashleyconnor/.ssh/known_hosts"
debug3: load_hostkeys: found key type RSA in file /Users/ashleyconnor/.ssh/known_hosts:20
debug3: load_hostkeys: loaded 1 keys
debug3: order_hostkeyalgs: prefer hostkeyalgs: ssh-rsa-cert-v01@openssh.com,ssh-rsa-cert-v00@openssh.com,ssh-rsa
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug2: kex_parse_kexinit: diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1
debug2: kex_parse_kexinit: ssh-rsa-cert-v01@openssh.com,ssh-rsa-cert-v00@openssh.com,ssh-rsa,ssh-dss-cert-v01@openssh.com,ssh-dss-cert-v00@openssh.com,ssh-dss
debug2: kex_parse_kexinit: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-gcm@openssh.com,aes256-gcm@openssh.com,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,rijndael-cbc@lysator.liu.se
debug2: kex_parse_kexinit: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-gcm@openssh.com,aes256-gcm@openssh.com,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,rijndael-cbc@lysator.liu.se
debug2: kex_parse_kexinit: hmac-md5-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-ripemd160-etm@openssh.com,hmac-sha1-96-etm@openssh.com,hmac-md5-96-etm@openssh.com,hmac-md5,hmac-sha1,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha1-96,hmac-md5-96
debug2: kex_parse_kexinit: hmac-md5-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-ripemd160-etm@openssh.com,hmac-sha1-96-etm@openssh.com,hmac-md5-96-etm@openssh.com,hmac-md5,hmac-sha1,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha1-96,hmac-md5-96
debug2: kex_parse_kexinit: zlib@openssh.com,zlib,none
debug2: kex_parse_kexinit: zlib@openssh.com,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,rijndael-cbc@lysator.liu.se
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,rijndael-cbc@lysator.liu.se
debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,umac-64@openssh.com,hmac-sha2-256,hmac-sha2-256-96,hmac-sha2-512,hmac-sha2-512-96,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha1-96,hmac-md5-96
debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,umac-64@openssh.com,hmac-sha2-256,hmac-sha2-256-96,hmac-sha2-512,hmac-sha2-512-96,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha1-96,hmac-md5-96
debug2: kex_parse_kexinit: none,zlib@openssh.com
debug2: kex_parse_kexinit: none,zlib@openssh.com
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 zlib@openssh.com
debug2: mac_setup: found hmac-md5
debug1: kex: client->server aes128-ctr hmac-md5 zlib@openssh.com
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug2: dh_gen_key: priv key bits set: 119/256
debug2: bits set: 527/1024
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Server host key: RSA 50:db:75:ba:11:2f:43:c9:ab:14:40:6d:7f:a1:ee:e3
debug3: load_hostkeys: loading entries for host "192.168.222.111" from file "/Users/ashleyconnor/.ssh/known_hosts"
debug3: load_hostkeys: found key type RSA in file /Users/ashleyconnor/.ssh/known_hosts:20
debug3: load_hostkeys: loaded 1 keys
debug1: Host '192.168.222.111' is known and matches the RSA host key.
debug1: Found key in /Users/ashleyconnor/.ssh/known_hosts:20
debug2: bits set: 511/1024
debug1: ssh_rsa_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: /Users/ashleyconnor/.ssh/id_rsa (0x7fc212600540),
debug2: key: /Users/ashleyconnor/.ssh/bitbucket (0x7fc212600730),
debug2: key: /Users/ashleyconnor/.ssh/deployer (0x7fc212600a00),
debug2: key: /Users/ashleyconnor/.ssh/github (0x7fc212600c80),
debug2: key: /Users/ashleyconnor/.ssh/ash_ovh (0x7fc212601010),
debug2: key: /Users/ashleyconnor/.ssh/deployer_ovh (0x7fc2126011e0),
debug2: key: /Users/ashleyconnor/.vagrant.d/insecure_private_key (0x0), explicit
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: /Users/ashleyconnor/.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 RSA public key: /Users/ashleyconnor/.ssh/bitbucket
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey,password
debug1: Offering RSA public key: /Users/ashleyconnor/.ssh/deployer
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey,password
debug1: Offering RSA public key: /Users/ashleyconnor/.ssh/github
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey,password
debug1: Offering RSA public key: /Users/ashleyconnor/.ssh/ash_ovh
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey,password
debug1: Offering RSA public key: /Users/ashleyconnor/.ssh/deployer_ovh
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
Received disconnect from 192.168.222.111: 2: Too many authentication failures for vagrant
В vagrant ssh
команда работает нормально.
По словам старшего * ssh-config(5)
страница руководства, ssh всегда будет пытаться все ключи, известные агенту в дополнение к любым файлам идентификации:
IdentitiesOnly
Specifies that ssh(1) should only use the authentication identity files
configured in the ssh_config files, even if ssh-agent(1) offers more
identities. The argument to this keyword must be “yes” or “no”. This
option is intended for situations where ssh-agent offers many different
identities. The default is “no”.
IdentityFile
Specifies a file from which the user's DSA, ECDSA or RSA authentication
identity is read. The default is ~/.ssh/identity for protocol version 1,
and ~/.ssh/id_dsa, ~/.ssh/id_ecdsa and ~/.ssh/id_rsa for protocol
version 2. Additionally, any identities represented by the
authentication agent will be used for authentication. ssh(1) will try
to load certificate information from the filename obtained by
appending -cert.pub to the path of a specified IdentityFile.
Чтобы этого не произошло, необходимо указать IdentitiesOnly=yes
в дополнение к явно указанному закрытому ключу.
Например, запуск ssh
команда ниже:
$ ssh -i /home/henk/.vagrant.d/insecure_private_key \
vagrant@192.168.222.111 echo ok
производит:
Received disconnect from 192.168.222.111: 2: Too many authentication
failures for vagrant
Однако запуск того же ssh
команда и, кроме того, указание IdentitiesOnly=yes
:
$ ssh -o IdentitiesOnly=yes \
-i /home/henk/.vagrant.d/insecure_private_key vagrant@192.168.222.111 echo ok
производит:
ok
* Обратите внимание OpenBSD в проекте размещены актуальные документы для IdentitiesOnly и IdentityFile. К ним относятся дополнительный текст для новых функций, которые не меняют сути этого ответа.
Итак, у меня было 5 ключей в моем ssh-agent
и, несмотря на явную возможность использования бродячего ключа ssh, он все еще настаивал на циклическом переборе ключей в моем агенте, прежде чем удобно достигнуть max_tries, прежде чем перейти к нужному ключу.
Чтобы проверить, есть ли у вас эта проблема: Запустите ssh-add -l
- если этот список> 5, вам необходимо удалить ключи или отключить агент.
Чтобы исправить: запустить ssh-add -d ~/.ssh/X
где X
это ключ, который вы хотите удалить.
После того, как я безуспешно попробовал все советы здесь, я понял, что моей проблемой был новый метод аутентификации (GSSAPI), который всегда был безуспешным.
Я решил это редактированием ~/.ssh/config
файл:
Host *
GSSAPIAuthentication no
Надеюсь, это тоже кому-то поможет.
Ваш ssh-агент содержит больше ключей, чем ssh-сервер разрешает попытки аутентификации («MaxAuthTries», по умолчанию: 6).
Обратите внимание, что некоторые ssh-агенты, в частности связка ключей GNOME, автоматически загружают все ключи, которые они находят в ~ / .ssh, и что эти ключи не могут быть выгружены с помощью "ssh-add - [dD]".
Вот несколько решений:
unset SSH_AUTH_SOCK
или используйте "IdentitiesOnly = yes", как предлагает @ henk-langeveldЧтобы предотвратить сбой из-за слишком большого количества ключей, мы можем использовать ssh, используя -o 'IdentitiesOnly=yes'
например ssh -i privateKey -o 'IdentitiesOnly=yes' user@host
в качестве альтернативы мы можем добавить следующие строки в файл ~ / .ssh / config
Host *
IdentitiesOnly yes
Чтобы подключить сервер с помощью команды быстрого исправления:
ssh -o IdentitiesOnly=yes -i ~/.ssh/private_key_or_pem_file_name server_user_name@ip_OR_hostname echo ok
Рекомендуемый способ указан ниже:
Но если у вас есть рецепты capistrano или другое программное обеспечение, которое подключает ваш ssh-сервер, вам необходимо исправить это соответствующим образом, как указано ниже:
В ~ / .ssh / config укажите в файле опцию "IdentitiesOnly yes" в конфигурации вашего сервера.
Host server_domain_OR_ip server_name_your_choice
User server_user_name
Hostname server_domain_OR_ip
RSAAuthentication yes
Compression yes
IdentityFile ~/.ssh/private_key_OR_pem_file
IdentitiesOnly yes
Port 22
private_key_OR_pem_file: В случае файла pem укажите также расширение ".pem"
Я столкнулся с этой же ошибкой при попытке запустить доступную книгу воспроизведения. В итоге я поставил опцию SSH IdentitiesOnly, используя --ssh-extra-args
:
ansible-playbook -i ../.vagrant/provisioners/ansible/inventory/vagrant_ansible_inventory playbook.yml --ssh-extra-args="-o IdentitiesOnly=yes"
Ключевое сообщение
Received disconnect from 192.168.222.111: 2:
Too many authentication failures for vagrant
Вы скопировали вывод vagrant ssh-config в качестве хоста по умолчанию в .ssh/config
но это пропускается, потому что у него конфликтующие параметры (имя хоста, порт). При отсутствии соответствующей записи ssh просто попробует все ключи, которые сможет найти.
Еще раз проверьте попытку ssh с -i
вариант
$ ssh -i $HOME/.vagrant.d/insecure_private_key vagrant@192.168.222.111 echo ok
Я считаю, что это то, как вы бы указали это в Ansible Inventory:
[vagrant]
192.168.222.111 ansible_ssh_private_key_file=/.../.vagrant.d/insecure_private_key
Сокращенный путь для удобочитаемости
Оригинальный ответ:
Сравните вывод vagrant ssh-config
с бродячей записью в вашем .ssh/config
. Убедитесь, что путь к закрытому ключу полностью совпадает.
Также убедитесь, что к ключевому файлу не могут получить доступ другие учетные записи. Мы все знают, что это за ключ, но SSH не знает, что это общеизвестно, и пытается защитить нас от использования ключей, которые могут быть скомпрометированы.