

■環境  
centos7.0

■エラーメッセージ  
・vagrant up時

[code]

    Bringing machine 'default' up with 'virtualbox' provider...
    ==> default: Checking if box 'chef/centos-7.0' is up to date...
    ==> default: There was a problem while downloading the metadata for your box
    ==> default: to check for updates. This is not an error, since it is usually due
    ==> default: to temporary network problems. This is just a warning. The problem
    ==> default: encountered was:
    ==> default:
    ==> default: The requested URL returned error: 404 Not Found
    ==> default:
    ==> default: If you want to check for box updates, verify your network connection
    ==> default: is valid and try again.
    ==> default: Clearing any previously set forwarded ports...
    ==> default: Clearing any previously set network interfaces...
    ==> default: Preparing network interfaces based on configuration...
        default: Adapter 1: nat
        default: Adapter 2: hostonly
    ==> default: Forwarding ports...
        default: 8000 => 12345 (adapter 1)
        default: 22 => 2222 (adapter 1)
    ==> default: Booting VM...
    ==> default: Waiting for machine to boot. This may take a few minutes...
        default: SSH address: 127.0.0.1:2222
        default: SSH username: vagrant
        default: SSH auth method: private key
        default: Warning: Connection timeout. Retrying...
        default: Warning: Connection timeout. Retrying...
        default: Warning: Connection timeout. Retrying...
    
[/code]

・vagrant ssh時

[code]

    ssh_exchange_identification: Connection closed by remote host
    
[/code]

■hosts.allow

[code]

    ALL : 127.0.0.1
    sshd : ALL
    
[/code]

known_hostsは削除済みです。作業しているなかで突然このような状態になりました。  
解決策をご教示いただけませんでしょうか。

CentOS7はvirtualBoxの中に立ち上げたゲストOSです。

* * *

`ssh -vvv -p 2222 -i ~/.vagrant.d/insecure_private_key -l vagrant 127.0.0.1`  
を実行したところ、下記のメッセージが出ました。  
どのように対処すればよいでしょうか？

[code]

    OpenSSH_6.9p1, LibreSSL 2.1.8
    debug1: Reading configuration data /Users/mae/.ssh/config
    debug1: Reading configuration data /etc/ssh/ssh_config
    debug1: /etc/ssh/ssh_config line 21: Applying options for *
    debug2: ssh_connect: needpriv 0
    debug1: Connecting to 127.0.0.1 [127.0.0.1] port 2222.
    debug1: Connection established.
    debug1: key_load_public: No such file or directory
    debug1: identity file /Users/mae/.vagrant.d/insecure_private_key type -1
    debug1: key_load_public: No such file or directory
    debug1: identity file /Users/mae/.vagrant.d/insecure_private_key-cert type -1
    debug1: identity file /Users/mae/.ssh/id_rsa type 1
    debug1: key_load_public: No such file or directory
    debug1: identity file /Users/mae/.ssh/id_rsa-cert type -1
    debug1: Enabling compatibility mode for protocol 2.0
    debug1: Local version string SSH-2.0-OpenSSH_6.9
    ssh_exchange_identification: Connection closed by remote host
    
[/code]


CC BY-SA 3.0
2015-12-30T14:23:40.647
20486
2016-09-15T14:02:18.050
2015-12-31T07:47:39.537
8000
13850
question
vagrant
ssh_exchange_identification: Connection closed by remote hostとなりvagrant sshできなくなった


手元の環境(`ubuntu 15.10`)からゲストOS(`CentOS
6.7`)`ssh`が成功する場合のログと見比べていますが、`ssh_exchange_identification: Connection closed
by remote host`の例の行まではほぼ同じみたいです。

[code]

    $ vagrant up
    ...
    ...
    (ゲストOSが起動してからvagrantがsshアクセスに使う秘密鍵を調べる)
    $ vagrant ssh-config
    Host www
      HostName 127.0.0.1
      User vagrant
      Port 2222
      UserKnownHostsFile /dev/null
      StrictHostKeyChecking no
      PasswordAuthentication no
      IdentityFile /home/cul8er/xxxx/.vagrant/machines/www/virtualbox/private_key
      IdentitiesOnly yes
      LogLevel FATAL
    $ ssh -vvv -p 2222 -l vagrant -i /home/cul8er/xxxx/.vagrant/machines/www/virtualbox/private_key 127.0.0.1
    OpenSSH_6.9p1 Ubuntu-2, OpenSSL 1.0.2d 9 Jul 2015
    debug1: Reading configuration data /home/cul8er/.ssh/config
    debug1: Reading configuration data /etc/ssh/ssh_config
    debug1: /etc/ssh/ssh_config line 19: Applying options for *
    debug2: ssh_connect: needpriv 0
    debug1: Connecting to 127.0.0.1 [127.0.0.1] port 2222.
    debug1: Connection established.
    debug1: key_load_public: No such file or directory
    debug1: identity file /home/cul8er/xxxx/.vagrant/machines/www/virtualbox/private_key type -1
    debug1: key_load_public: No such file or directory
    debug1: identity file /home/cul8er/xxxx/.vagrant/machines/www/virtualbox/private_key-cert type -1
    debug1: Enabling compatibility mode for protocol 2.0
    debug1: Local version string SSH-2.0-OpenSSH_6.9p1 Ubuntu-2
    
    <ここまでのログは質問の起きた状況とほぼ同じ見える>
    
    debug1: Remote protocol version 2.0, remote software version OpenSSH_5.3
    debug1: match: OpenSSH_5.3 pat OpenSSH_5* compat 0x0c000000
    debug2: fd 3 setting O_NONBLOCK
    debug1: Authenticating to 127.0.0.1:2222 as 'vagrant'
    ...
    ...
    debug3: authmethod_is_enabled publickey
    debug1: Next authentication method: publickey
    debug1: Trying private key: /home/cul8er/xxxx/.vagrant/machines/www/virtualbox/private_key
    ...
    ...
    debug1: Authentication succeeded (publickey).
    Authenticated to 127.0.0.1 ([127.0.0.1]:2222).
    ...
    ...
    
[/code]

幾つかのウェブページの説明ではこのエラーは複数の原因があるようですね。  
中でも[ssh_exchange_identification: Connection closed by remote
host](http://edoceo.com/notabene/ssh-exchange-
identification)というページに比較的網羅的な説明があったので紹介します。

  * リモートサーバー（この質問で言うとゲストマシン側)の`hosts.allow`と`hosts.deny`のどちらかまたは両方に接続制御がかかっている場合
  * サーバーの過負荷：ログインしようとしているサーバーで`sshd`に関連する大量のゾンビプロセスがあって接続最大数に達したなどの場合
  * フィンガープリントの情報が何かしらのきっかけで壊れてしまった場合。`~/.ssh/known_hosts`の中身を消したり、サーバー側の公開鍵ファイル(`authorized_keys`)を作り直したりして対応することがあるらしい他、`/etc/ssh/*key*`がない状態でsshdが再起動されていないときにもエラーの発生事例があるらしい
  * `glibc`や`openssl`のアップグレード後に`ssh`/`sshd`との依存関係が壊れてしまった場合 

ご参考になれば。


CC BY-SA 3.0
2015-12-31T06:14:53.153
20501
2015-12-31T06:24:25.453
2015-12-31T06:24:25.453
9403
9403
20486
answer


当方では、Vagrant 1.5で作ったBoxをVagrant 1.7.4環境において`vagrant up`でゲストOS生成後、`vagrant
package`でBoxを作り、そのBoxから再度Vagrant 1.7.4環境で`vagrant
up`したとき、SSH秘密鍵のパスがBox内部の秘密鍵から`~/.vagrant.d/insecure_private_key`に変更になり、`vagrant
up`にてSSHのタイムアウトエラーが出るようになりました。

現象としては、Vagrant
1.7より採用された、安全でない鍵ペアを使っているBoxとゲストOSの鍵ペアを置換する機能のために、まずは安全でない鍵ペアでのログインが試みられていて、手元の環境に存在するVagrant配布物に含まれる
**秘匿されていない秘密鍵**`~/.vagrant.d/insecure_private_key`に対応する公開鍵が、ゲストOSの`~/.ssh/authorized_keys`に存在しないということだと思います。

解決法としては、手元の環境で秘密鍵に対応する公開鍵を作成（この公開鍵はネットで事実上公開されているので
<https://github.com/mitchellh/vagrant/tree/master/keys> マスクしません）

[code]

    $ ssh-keygen.exe -y -f ~/.vagrant.d/insecure_private_key
    ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA6NF8iallvQVp22WDkTkyrtvp9eWW6A8YVr+kz4TjGYe7gHzIw+niNltGEFHzD8+v1I2YJ6oXevct1YeS0o9HZyN1Q9qgCgzUFtdOKLv6IedplqoPkcmF0aYet2PkEDo3MlTBckFXPITAMzF8dJSIFo9D8HfdOV0IAdx4O7PtixWKn5y2hMNG0zQPyUecp4pzC6kivAIhyfHilFR61RGL+GPXQ2MWZWFYbAGjyiYJnAmCP3NOTd0jMZEnDkbUvxhMmBYSdETk1rRgm+R4LOzFUGaHqHDLKLX+FIPKcF96hrucXzcWyLbIbEgE98OHlnVYCzRdK8jlqm8tehUc9c9WhQ==
    
[/code]

として公開鍵を生成した後、ゲストOSのLinuxに`vagrant`ユーザでパスワードログインをして、先ほどの公開鍵を

[code]

    $ cat << 'EOS' >>  ~/.ssh/authorized_keys
    ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA6NF8iallvQVp22WDkTkyrtvp9eWW6A8YVr+kz4TjGYe7gHzIw+niNltGEFHzD8+v1I2YJ6oXevct1YeS0o9HZyN1Q9qgCgzUFtdOKLv6IedplqoPkcmF0aYet2PkEDo3MlTBckFXPITAMzF8dJSIFo9D8HfdOV0IAdx4O7PtixWKn5y2hMNG0zQPyUecp4pzC6kivAIhyfHilFR61RGL+GPXQ2MWZWFYbAGjyiYJnAmCP3NOTd0jMZEnDkbUvxhMmBYSdETk1rRgm+R4LOzFUGaHqHDLKLX+FIPKcF96hrucXzcWyLbIbEgE98OHlnVYCzRdK8jlqm8tehUc9c9WhQ== vagrant insecure public key
    EOS
    
[/code]

で、ゲストOSの`vagrant`ユーザの公開鍵認証SSHログインができるように登録します。

その後、ゲストOSを抜けた後、`vagrant halt`をすると、

[code]

    $ vagrant halt
    ==> default: Attempting graceful shutdown of VM...
        default:
        default: Vagrant insecure key detected. Vagrant will automatically replace
        default: this with a newly generated keypair for better security.
        default:
        default: Inserting generated public key within guest...
        default: Removing insecure key from the guest if its present...
        default: Key inserted! Disconnecting and reconnecting using new SSH key...
    
[/code]

と表示され、`vagrant ssh`用の新しい鍵ペアが生成・置換されます。

以降、正常に`vagrant up`できるようになると思います。


CC BY-SA 3.0
2015-12-31T11:12:45.273
20508
2015-12-31T11:12:45.273
12633
20486
answer


先日私もハマったのですが、ゲストOSにsshがインストールされてない可能性はないですか??

Vagrantfileを以下のように編集してvagrant
upするとGUIが起動するので、そこ画面でID/PASSともにvagrantでログインして、sshコマンドがインストールされてるかどうか試していただきたいです。もしインストールされてなければ、そもそもsshできないのでvagrant
sshもこけてしまいます。

[code]

    config.vm.provider "virtualbox" do |vb|
    #   # Display the VirtualBox GUI when booting the machine
      vb.gui = true
    #
    #   # Customize the amount of memory on the VM:
    #   vb.memory = "1024"
    end
    
[/code]

あ、「突然このようになった」て書いてありますね、前はできたということなら、↑の可能性はないと思います。


CC BY-SA 3.0
2015-12-31T14:33:09.630
20513
2015-12-31T14:33:09.630
5852
20486
answer