Vagrant VM での SSH の基礎

Vagrant VM での SSH の基礎

私は以下の要件を満たす Vagrant マシン (Ubuntu 12.04) を構築しています。

  • sudo 権限を持つユーザーへの Vagrant 経由の SSH アクセス。

ssh-keygenホスト上で公開鍵/秘密鍵を生成し( 経由)、公開鍵authorized_keysをゲスト上のファイルに移動しました。また、パスワードなしの SSH を試しました。

vagrant sshパスワードが有効になっている SSH キーを入力すると、次のようなことが起こります。

  • ゲスト VM に SSH 接続するには、ホスト マシンでキーフレーズを入力する必要があります。
  • 入力するたびに正しいキーフレーズは受け入れられません。

その結果、次のエラー メッセージが表示されます。

SSH authentication failed! This is typically caused by the public/private
keypair for the SSH user not being properly set on the guest VM. Please
verify that the guest VM is setup with the proper public key, and that
the private key path for Vagrant is setup properly as well.

次に、パスワードなしの ssh を試しました。

vagrant ssh
[email protected]'s password: 

??

私は Vagrant ユーザーを設定したことはありません。user@hostname設定どおりになっているはずで、VirtualBox で VM を起動すると動作することを確認できます。

秘密の SSH キーを Vagrant で適切に動作させるにはどうすればよいですか? ホストで何をすればよいですか、ゲストで何をすればよいですか?

アップデート

VirtualBox では VM は稼働していますが、以下の問題に加えて、Vagrant コンソールから次のコマンドを実行できませんvagrant ssh

vagrant up vagrant halt

機能する唯一の vagrant コマンドは ですvagrant suspend。これを使用すると、 を介してマシンを実際に停止できますvagrant halt。出力は次のとおりです。

$ vagrant halt
[default] Attempting graceful shutdown of VM...
SSH authentication failed! This is typically caused by the public/private
keypair for the SSH user not being properly set on the guest VM. Please
verify that the guest VM is setup with the proper public key, and that
the private key path for Vagrant is setup properly as well.

答え1

このスレッドに来る人のために、この解決策を追加します:

まず、ホスト マシンでこのファイルを開きます。

$ sudo vim ~/.vagrant.d/boxes/<yourbox>/include/_Vagrantfile

config.ssh.private_key_path秘密鍵ファイルに設定されていることを確認してください。設定されていない場合は更新してください

デフォルトのパスワードで Vagrant ボックスに ssh する

$ vagrant ssh (default pwd = ‘vagrant’]

箱に入ったら:

vagrant@lucid64:~$ sudo visudo -f .ssh/authorized_keys

このファイルに公開鍵を追加してファイルを保存し、ボックスを終了します。

vagrant@lucid64:~$ exit

ローカルマシンに戻る

$ vagrant halt
$ vagrant up

これは私にとってはうまくいきました

答え2

SSH キーの問題が原因ではないものの、私も同じ問題を抱えていました。マシンを起動すると、Virtualbox は機能し、ゲストを正常に起動しました。私自身もマシンに SSH 接続することができ、vagrant sshパスワードを要求されたものの、機能しました。ログインすると、ゲストの /var/log/auth.log に次の内容が記録されていました。

Feb 13 10:14:34 spaaza-dev sshd[1468]: Accepted password for vagrant from 192.168.50.1 port 61816 ssh2
Feb 13 10:14:34 spaaza-dev sshd[1468]: pam_unix(sshd:session): session opened for user vagrant by (uid=0)
Feb 13 10:14:34 spaaza-dev sshd[1636]: Received disconnect from 192.168.50.1: 11: disconnected by user
Feb 13 10:14:34 spaaza-dev sshd[1468]: pam_unix(sshd:session): session closed for user vagrant
Feb 13 10:16:44 spaaza-dev sshd[1764]: Authentication refused: bad ownership or modes for directory /home/vagrant

/home/vagrant の権限を確認してみました:

drwxrwxrwx  6 vagrant vagrant 4096 Feb 13 10:15 vagrant

よくありません。私が行っていた他の作業によって、/home/vagrant ディレクトリの権限が誤って変更されてしまいました。次の操作で問題は解決しました。

# chmod 755 vagrant

drwxr-xr-x  6 vagrant vagrant 4096 Feb 13 10:15 vagrant

その後、マシンをシャットダウンし、再度起動すると、Vagrant は正常に動作しました。 :-)

答え3

コピーしてみてくださいvagrant 安全でない公開鍵.ssh/authorized_keysゲストボックス内のファイルに追加します。

これで ssh の問題が解決することを願っています。

より安全にしたい場合は、自分の.ssh/id_rsa.pubを前述のファイルにコピーして、

config.ssh.private_key_path = '~/.ssh/id_rsa'

Vagrantfile に記述します。

答え4

私も同様の問題を抱えていました。最終的に私は次のように解決しました:

  • VagrantとVirtualboxが両方とも最新であることを確認する
  • vagrant-vbguestプラグインをインストールしてVirtualBox Guest Additionsが最新であることを確認するGitHubルビージェム:

    vagrant plugin install vagrant-vbguest
    

関連情報