Vagrant の centos/7 での SSH 設定

Vagrantfile に次のように記述した。

Vagrant.configure("2") do |config|
  config.vm.box = "centos/7"
end

これで vagrant up で Centos 7 が立ち上がる… はずだったが、次のようなエラーに遭遇した。

default: Warning: Authentication failure. Retrying...
default: Warning: Authentication failure. Retrying...
default: Warning: Authentication failure. Retrying...
...

どうやらネットワークに接続できないようだ。どういうことだろうか。

$ vagrant status
Current machine states:

default                   running (virtualbox)

VM そのものは起動しているようだ。ssh-config はどうなっているのだろう?

$ vagrant ssh-config
Host default
  HostName 127.0.0.1
  User vagrant
  Port 2200
  UserKnownHostsFile /dev/null
  StrictHostKeyChecking no
  PasswordAuthentication no
  IdentityFile /path/to/.vagrant/machines/default/virtualbox/private_key
  IdentitiesOnly yes
  LogLevel FATAL

どうやらキーもちゃんと設定できているようだ。ポートは 2200 が使われている。では、これで接続できるかな?

$ ssh -p 2200 -i /Users/mahata/projects/github_wiki_notifier/.vagrant/machines/default/virtualbox/private_key vagrant@127.0.0.1
vagrant@127.0.0.1's password:

うむむ、SSH キーを指定したのにパスワードを聞かれている。ここに問題がありそうだ。とりあえずデフォルトパスワードの vagrant を入力して、ログインしてみる。

ログインしたら ~/.ssh に移動して鍵の状態を調べてみよう。

$ cd ~/.ssh
$ ls -l authorized_keys 
-rw-rw-r--. 1 vagrant vagrant 389 Aug  8 07:40 authorized_keys

ああ、これか。これが原因だ。authorized_keys が 664 パーミッションになっている。これを 600 にしてみよう。

$ chmod 600 authorized_keys

これで vagrant ssh が効くようになった。

なぜ centos/7 の設定がこうなってしまったのか分からないけど、単なる設定ミスが原因だったようだ。

(追記: 2016年9月29日)

これは Vagrant 1.8.5 の問題で 1.8.4 や 1.8.6 では起こらない、という主張するウェブページを見かけた。試しに 1.8.6 にアップデートし、box そのものはアップデートせずに vagrant destroyvagrant up を実行したところ、問題は再現しなくなった。

問題解決できたけれど、少し煮え切らないものが残ってしまった。

コメントを残す

コメントを投稿するには、以下のいずれかでログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中