質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

SSH

SSH(Secure Shell)は、セキュアチャネルを通してデータを交換するためのネットワークプロトコルです。リモートサーバーへのコマンド実行やファイル転送を行う時に一般的に使用されます。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

VirtualBox

VirtualBoxは、現在米オラクル社が開発している、 x86仮想化ソフトウェア・パッケージの一つです。

Vagrant

Vagrantは、VirtualBox上の仮想マシンを コマンドラインから作成してくれるソフトウェアです。 ビルド環境など容易に構築が可能です。

Q&A

解決済

1回答

2679閲覧

vagrant up で default: SSH auth method: private key より先に進まない問題

Katsuma-F

総合スコア6

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

SSH

SSH(Secure Shell)は、セキュアチャネルを通してデータを交換するためのネットワークプロトコルです。リモートサーバーへのコマンド実行やファイル転送を行う時に一般的に使用されます。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

VirtualBox

VirtualBoxは、現在米オラクル社が開発している、 x86仮想化ソフトウェア・パッケージの一つです。

Vagrant

Vagrantは、VirtualBox上の仮想マシンを コマンドラインから作成してくれるソフトウェアです。 ビルド環境など容易に構築が可能です。

0グッド

0クリップ

投稿2020/02/03 12:51

編集2020/02/06 12:52

最終目的:VagrantでのSSH接続がしたい

前提情報

ドットインストールの"ローカル開発環境の構築 [macOS編]"で環境構築をした、Vagrant, VirtualBox初学者です。
フォルダ階層は下記の様になっています。
/Users/ユーザー名/MyVagrant/MyCentOS
「MyCentOS」というフォルダ上で vagrant コマンドを実行しています。

Vagrant

1MacBook-Pro:.ssh ユーザー名$ pwd 2/Users/ユーザー名/MyVagrant/MyCentOS/.ssh 3MacBook-Pro:.ssh ユーザー名$ ls -la 4total 0 5drwxr-xr-x 2 ユーザー名 staff 64 1 27 19:56 . 6drwxr-xr-x 14 ユーザー名 staff 448 2 3 21:35 ..

環境

  • macOS Catalina 10.15.3
  • VirtualBox 5.2.36
  • Vagrant 2.2.6

発生している問題

** vagrant up で default: SSH auth method: private key より先に進まない **

Vagrant

1MacBook-Pro:MyCentOS ユーザー名$ vagrant up 2Bringing machine 'default' up with 'virtualbox' provider... 3==> default: Checking if box 'bento/centos-6.8' version '2.3.4' is up to date... 4==> default: Clearing any previously set forwarded ports... 5==> default: Clearing any previously set network interfaces... 6==> default: Preparing network interfaces based on configuration... 7 default: Adapter 1: nat 8 default: Adapter 2: hostonly 9==> default: Forwarding ports... 10 default: 22 (guest) => 2222 (host) (adapter 1) 11==> default: Booting VM... 12==> default: Waiting for machine to boot. This may take a few minutes... 13 default: SSH address: 127.0.0.1:2222 14 default: SSH username: vagrant 15 default: SSH auth method: private key 16Timed out while waiting for the machine to boot. This means that 17Vagrant was unable to communicate with the guest machine within 18the configured ("config.vm.boot_timeout" value) time period. 19 20If you look above, you should be able to see the error(s) that 21Vagrant had when attempting to connect to the machine. These errors 22are usually good hints as to what may be wrong. 23 24If you're using a custom box, make sure that networking is properly 25working and you're able to connect to the machine. It is a common 26problem that networking isn't setup properly in these boxes. 27Verify that authentication configurations are also setup properly, 28as well. 29 30If the box appears to be booting properly, you may want to increase 31the timeout ("config.vm.boot_timeout") value.

vagrant up ができているか確認

Vagrant

1MacBook-Pro:MyCentOS ユーザー名$ vagrant status 2Current machine states: 3 4default running (virtualbox) 5 6The VM is running. To stop this VM, you can run `vagrant halt` to 7shut it down forcefully, or you can run `vagrant suspend` to simply 8suspend the virtual machine. In either case, to restart it again, 9simply run `vagrant up`.

この直後に vagrant ssh をすると、

Vagrant

1MacBook-Pro:MyCentOS ユーザー名$ vagrant ssh 2ssh_exchange_identification: read: Connection reset by peer

このように、SSH接続ができなくて困っています。

試したこと

同じ問題が記載されていると思った下記のHatena Blogを参考に解決しようしています。
vagrant upでprivate keyより先に進まない症状
しかし、理解できないことが2つあるので教えていただきたいです。
記事中の、

作成した公開鍵を /Users/hoge/MyVagrant に貼り付け

とは、直前で作成したpublic_keyというファイルをMyVagrant/ に貼り付けるという作業で間違いないでしょうか?

emacs public_key 公開鍵をコピー

上記のコマンドは、秘密鍵から作成した公開鍵を具体的にどうすることなのでしょうか?

これは、作成したpublic_keyファイルを /Users/ユーザー名/MyVagrant/MyCentOS/.ssh/ に配置&上書きすることなのではないかと下記のQiitaの記事を読んで自分なりに推測していますが、ご指摘のほどよろしくお願い申し上げます。
VagrantでSSH鍵の設定 - [Authentication failure. Retrying…]の対処策



MacBook-Pro:MyCentOS ユーザー名$ ssh -vvv vagrant@localhost -p 2222 .vagrant/machines/default/virtualbox/private_key OpenSSH_7.9p1, LibreSSL 2.7.3 debug1: Reading configuration data /Users/ユーザー名/.ssh/config debug1: Reading configuration data /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config line 48: Applying options for * debug2: resolving "localhost" port 2222 debug2: ssh_connect_direct debug1: Connecting to localhost [::1] port 2222. debug1: connect to address ::1 port 2222: Connection refused debug1: Connecting to localhost [127.0.0.1] port 2222. debug1: Connection established. debug1: identity file /Users/ユーザー名/.ssh/id_rsa type 0 debug1: identity file /Users/ユ/.ssh/id_rsa-cert type -1 debug1: identity file /Users/ユ/.ssh/id_dsa type -1 debug1: identity file /Users/ユ/.ssh/id_dsa-cert type -1 debug1: identity file /Users/ユ/.ssh/id_ecdsa type -1 debug1: identity file /Users/ユ/.ssh/id_ecdsa-cert type -1 debug1: identity file /Users/ユ/.ssh/id_ed25519 type -1 debug1: identity file /Users/ユ/.ssh/id_ed25519-cert type -1 debug1: identity file /Users/ユ/.ssh/id_xmss type -1 debug1: identity file /Users/ユ/.ssh/id_xmss-cert type -1 debug1: Local version string SSH-2.0-OpenSSH_7.9 ssh_exchange_identification: read: Connection reset by peer

-iオプションを付けた場合

MacBook-Pro:MyCentOS ユーザー名$ ssh -vvv vagrant@localhost -p 2222 -i .vagrant/machines/default/virtualbox/private_key OpenSSH_7.9p1, LibreSSL 2.7.3 debug1: Reading configuration data /Users/ユーザー名/.ssh/config debug1: Reading configuration data /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config line 48: Applying options for * debug2: resolving "localhost" port 2222 debug2: ssh_connect_direct debug1: Connecting to localhost [::1] port 2222. debug1: connect to address ::1 port 2222: Connection refused debug1: Connecting to localhost [127.0.0.1] port 2222. debug1: Connection established. debug1: identity file .vagrant/machines/default/virtualbox/private_key type -1 debug1: identity file .vagrant/machines/default/virtualbox/private_key-cert type -1 debug1: Local version string SSH-2.0-OpenSSH_7.9 ssh_exchange_identification: read: Connection reset by peer

最終的にはvagrant destroyをして、環境を再構築することになりました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

privateキーは、sshする側に。
publicキーは、sshされる側、される先に。
という原理原則があります。

ここで必要なのは、
・VagrantのBoxの中の
・vagrantアカウントに
・publicキーを置く
という作業です。

すなわち、例えばCentOS
(そしておそらく殆どのLinux)の場合、
/home/vagrant/.ssh/authorized_keys
のファイルの中に公開鍵の行を記載する。というものです。

これなんか参考になるかな

閑話休題
さて、そもそもvagrantは内部的にはVagrantコマンドを実行している場所に存在するprivate keyを使って、仮想マシンにsshして仮想マシンの中の公開鍵を使って認証してもらって接続しているだけです。

ですからこの辺のデバッグはこんな感じにできます。

bash

1ssh -vvv vagrant@localhost -p "2222" -i .vagrant/machines/"VM、Box名"/virtualbox/private_key

(すいません、-iオプションが抜けていました。鍵ファイルを指定するオプションになります)
-pの後の数字は、vagrant upした後に出てくるポート番号、-vvvは、デバッグ用に冗長でログ表示出すというオプションです

こうするとどこで接続に失敗しているのか、わかりますよ。

投稿2020/02/04 06:23

編集2020/02/06 03:42
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Katsuma-F

2020/02/04 13:21

aka-personaさん、ご回答ありがとうございます! 頂いたご指摘から、 /Users/ユーザー名/MyVagrant/MyCentOS/.ssh/ に、仮想マシンの中の公開鍵[authorized_keysファイル]を作成して、そしてそのファイルに秘密鍵から作成した公開鍵[public_keyファイル]の中身を貼り付けました。 その上で、デバックのコマンドを入力しました。(その後、chmod 600 authorized_keys) debug1: connect to address ::1 port 2222: Connection refused 表示された中のこの行が、どこで接続に失敗しているかを表していると思ったのですが、正しいport番号を /Users/ユーザー名/MyVagrant/MyCentOS/Vagrant の中身に設定すればいいということなのでしょうか? どうすればこのエラーが無くなるのか教えていただきたいです。
退会済みユーザー

退会済みユーザー

2020/02/05 01:02 編集

/Users/ユーザー名/MyVagrant/MyCentOS/.ssh/ は、たぶん、MacOS側のディレクトリですよ。pathの見た目からして。 これは仮想マシンの『外側』にあたる場所です。 仮想マシンの『中に』設定してやる必要があります。 /home/vagrant/.ssh/authorized_keys というのは、仮想マシンの中です。 ■仮想マシンって何か まずもって仮想マシンというのは、MacOS(に限らずWindowsだろうがLinuxだろうが)の中に、まったく別の、まっさらな別の物理的なハードウェアを、CPUや周辺I/Oバスの機能、エミュレーションなどを駆使して見かけ上(仮想的に)、新たに作ってしまうものです。 これによって、ホスト側の環境と完全に分離し、仮想マシン内部がどのように壊れようともホスト側に影響を及ぼすようなことが無いようになっています。 ■仮想マシンとのファイル共有 ところがしかし、そのままだとホスト側とデータや情報がやり取りできず、不便極まりないため、 ・ネットワーク的につなげる ・ファイルシステムを限定的に共有する などの方法が提供されているわけです。 Virtual Boxの場合、vboxsfという機能が提供されており、 Vagrantはこれを利用して、(デフォルトだと)Vagrantファイルが置かれたディレクトリが仮想マシンの中の/vagrantにマウント(ここではいったん接続と置き換えて理解しても構いません)されます。 これは、仮想マシンの中の/home/vagrantとは別のディレクトリのため、注意が必要です。 ↓こんな感じ /-/vagrant -/home/vagrant -/opt -/var … ■vagrant sshについて MacOS"から"、Boxの"中に"、sshしているのですよ。 したがって、boxの”中に”authorized_keys"を置いてやる必要があります。 それはすなわち、”boxの中から見て” /home/vagrant/.ssh/authorized_keys となります。
Katsuma-F

2020/02/05 15:41

ご返信ありがとうございます! authorized_keysを仮想マシンの中に設定することについて、状況が把握できました。 (イメージで、MacOS側にある仮想マシンの外側のディレクトリにauthorized_keysを設定し、vagrant sshすることでその外側のディレクトリが仮想マシンの中のディレクトリに反映されるものだと勘違いしていました。) ■vagrant sshについて ”boxの中から見て”、/home/vagrant/.ssh/ に authorized_keysファイルを置こうとしたのですが、方法がわかりません。 "vagrant ssh できない .ssh/authorized_keys"など、数パターンの文でググって下記の記事などを見ました。 https://qiita.com/Esfahan/items/e5f707dc6d116c2cc751 やはりBoxの中のディレクトリを開くには vagrant ssh が成功しないといけないと思ったのですが、可能な方法があるのでしょうか? 教えていただきたいです。
退会済みユーザー

退会済みユーザー

2020/02/06 07:04 編集

vagrant sshができない今、此処から先は、authorized keyをどうにかして置く、というのが直球な解答なのですが、提案できるのは、以下でしょうか。 単純なsshを試してみて、これがだめな場合はVirtual BoxのGUIを使って、活路を開きます。 ■ 普通にsshしてみる Boxの中のopensshの設定次第ですが、鍵認証を使わなくても、パスワード認証も通るようになっている可能性があります。 なので、MacOSから以下のように鍵指定なしで接続してみてください。接続ができれば、公開鍵を設定しなおしてみてください。 ssh -vvv vagrant@localhost -p "2222" パスワードは、多分"vagrant"になっていると思います。 そうして接続した後、authorized_keysを編集してください。 ■ ファイル共有を強引にして持ち込む VirtualBoxのGUIから、共有フォルダー(ファイル共有機能)で公開鍵を共有し、CentOSの(Virtual Boxのディスプレイ)画面から、 cat /path/to/authorized_keys >> /home/vagrant/.ssh/authrized_keys する方法です。 共有フォルダーに関しては、Virtual Boxの仮想マシンの設定(歯車アイコン)から行ってください。 ただし、Vagrant Boxの中にインストール済みのものVirtual BoxのGuest Additionsのバージョンが、MacOS側の、Virtual Boxのバージョンと合っていないと共有フォルダー機能そのものが使えない場合が多いです。 ■ 手で書く これは絶対に避けたいところですが、Virtual Boxの仮想マシンのディスプレイで、公開鍵を手打ちで入れる方法です。 vi ~/.ssh/authorized_keys して書くのですが、一文字も間違えられないので、あまりおすすめできません。 クリップボードの共有もゲストOSでGTKが使えないと使えないぽいので。
Katsuma-F

2020/02/06 12:49

ご返信ありがとうございます! ■ 普通にsshしてみる 接続できませんでした。 ■ ファイル共有を強引にして持ち込む まず、VirtualBoxのGUIから起動してディスプレイの"表示"をすると、「FATAL:could not read from the boot medium! System halted.」と表示されてコマンドを打てる状態ではありませんでした。 この問題を解決しようとしました。 http://free-money.hatenablog.com/entry/2017/12/10/024517 今回の質問以前に、ストレージの「ディスクメージファイルを開けませんでした」というエラーで vagrant ssh ができず、解決しようとしてストレージの仮想光学ディスクのファイルを削除しました。 この様に問題を雑に回避してしまっていました。 問題のファイルを修復しようとしましたが、今は早く環境を再構築することの方が重要だったので諦めました。 仮想マシンに関する頂いたご指摘から新しく理解できたことがあり、今後のためになりました。 丁寧に教えてくださり本当にありがとうございました!
退会済みユーザー

退会済みユーザー

2020/02/07 00:47

それはそもそも起動してねぇじゃーん・・・
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問