20490


`vagrant`がバージョン1.7以降になってから  
初回のbox作成・起動時に`insecure_private_key` を  
置き換えていると説明されていますが、具体的に何がどうなっているのでしょうか。

質問の経緯は以下のとおりです。

現在`ubuntu 15.04`で`vagrant 1.7.2`を使っています。  
以前、ホストOSに`windows7`を使っていた頃、  
`vagrant`が1.7になってからのことですが、boxを新規作成させた後、  
`teraterm`等からログインできなくなるという現象が起こり、  
それについてはネットの情報を参考に`Vagrantfile`に

[code]

    config.ssh.insert_key = false
    
[/code]

という1文を挿入することでさしあたりの問題は解決しました。

いくつかの説明を読んでいると、どうやら`vagrant`が1.7になってからの仕様変更で、  
[vagrantの提供する共通公開鍵](https://github.com/mitchellh/vagrant/blob/master/keys/vagrant.pub)を持つboxを使ったゲストOS作成時では  
それに対応するホスト側の秘密鍵(`~/.vagrant.d/insecure_private_key`)が  
自動的に置き換えられてしまう……らしい……みたいなことになっていると  
なんとなく理解していました。

ところが今日、OSを`ubuntu`に変えてから初めて、

[code]

    vagrant init chef/centos-6.6
    
[/code]

とした後に、`Vagrantfile`を全く編集しない状態でも

[code]

    vagrant ssh
    
[/code]

とすると、普通にログインできてしまいました。  
これは以前、`windows7`で`vagrant 1.7`を使っていた時には  
`teraterm`でエラーになっていたはずでした。

これはもしかして1.7.2では何らかのバグが治ったのだろうか？  
くらいに考え、でも気になるので、試しに  
`~/.vagrant.d/insecure_private_key`と

[code]

    https://github.com/mitchellh/vagrant/blob/master/keys/
    
[/code]

に置いてある、[vagrantという名前のファイル](https://github.com/mitchellh/vagrant/blob/master/keys/vagrant)  
（共通公開鍵に対応する秘密鍵のはず）  
の中身を比較してみると、中身が全く同じです。

**ランダムに置き換えられた秘密鍵に変わるんじゃなかったのか？？**  
と、これまでの理解か、確認の方法、またはその両方が間違っているらしいと  
気が付いた次第。

元々公開鍵暗号の仕組みも、秘密鍵を持つ人だけが公開鍵を使って暗号を解ける、  
くらいの理解しかなかったので、そもそもそれが間違いなのかもしれませんが、  
結局、`vagrant` が初回のbox作成・起動時に`insecure_private_key`を  
置き換えていると説明されているのは、具体的に何がどうなっているのでしょうか。

愚問かと思いますが、教えていただけると嬉しいです。  
よろしくお願いします。


CC BY-SA 3.0
2015-06-04T21:42:09.927
10987
2015-12-30T22:40:39.547
2015-12-30T22:24:47.203
9403
9403
question
security vagrant ssh
insecure_private_key の置き換えについて


自己解決しました。  
確かに現在の`vagrant`はゲストOSの初回起動時にホストOS側の鍵情報を自動で変更し、ゲストOSと暗号の再調整を行っています。  
ただし、その置換後に使う秘密鍵ファイルの場所は`vagrant ssh-config`というコマンドを使わないと分からないようになっていました。

[code]

    $ vagrant up
    ...
    ...
    (ゲストOS起動中)
    ...
    (ゲストOS起動後に以下を実行)
    $ vagrant ssh-config
    HostName 127.0.0.1
    User vagrant
    Port 2222
    UserKnownHostsFile /dev/null
    StrictHostKeyChecking no
    PasswordAuthentication no
    IdentityFile /home/xxxx/.vagrant/machines/www/virtualbox/private_key
    IdentitiesOnly yes
    LogLevel FATAL
    
[/code]

`IdentityFile
/home/xxxx/.vagrant/machines/www/virtualbox/private_key`の部分が置き換えられた秘密鍵ファイルです。  
したがってこのファイルを指定して`ssh`コマンドを実行すると`vagrant ssh`としたときと全く同じ動作をします。

[code]

    ssh -p 2222 -l vagrant -i /home/xxxx/.vagrant/machines/www/virtualbox/private_key 127.0.0.1
    
[/code]


CC BY-SA 3.0
2015-12-30T22:21:51.050
20490
2015-12-30T22:40:39.547
2015-12-30T22:40:39.547
9403
9403
10987
answer