Vagrant sshが突然できなくなった問題(また)(Windows10、Vagrant、VirtualBox)
初回vagrant upした当日は(2日目も?)普通に使えていたのに、突然vagrant sshできなくなった。何も変えていないのに。(嘘)
ssh_exchange_identification: read: Connection reset
vagrant (virtual box)は起動できている。
仮説①
DHCPによってwindowsのIPアドレスが毎回変わることが原因?
→DHCP(LAN内のパソコン(クライアントマシン)の起動時にIPアドレスを割り当て、終了時に回収するためのプロトコル。LAN内で「現在」使われていないIPアドレスを貸与する。電源を落として再起動するとIPアドレスが変わる可能性がある。→クライアントマシンはどこに接続したら良いか分からなくなる。サーバには固定のIPアドレスを設定する必要がある。
DHCPはパソコンのOSが持っている。
仮説②違うログインの仕方をすればログインできる?
http://dqn.sakusakutto.jp/2013/08/windows_vagrant_ssh.html
上記ページを参考にとりあえず下記を試してみる。
ssh -i (private keyの場所。Vagrant ssh-configのIdentityFileで確認) -p 2222 vagrant@127.0.0.1
sshが無いからできないらしい。
OpneSSHというSSHプロトコルを使用する為のソフトがあるらしい。Windows版も出たとか。インストールしようとしてみたら、あった。「オプションの管理」
PowerShellでないと開けないらしい。
ssh -i (private keyの場所。Vagrant ssh-configのIdentityFileで確認) -p 2222 vagrant@127.0.0.1
ssh_exchange_identification: read: Connection reset
→同じ結果。
ちなみにOpenSSHの設定(Microsoft推奨)はできなかった。
https://docs.microsoft.com/ja-jp/windows-server/administration/openssh/openssh_install_firstuse
Start-Service sshd
Start-Service : サービス名 'sshd' のサービスが見つかりません。
発生場所 行:1 文字:1
+ Start-Service sshd
+ ~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (sshd:String) [Start-Service], ServiceCommandException
+ FullyQualifiedErrorId : NoServiceFoundForGivenName,Microsoft.PowerShell.Commands.StartServiceCommand
仮説③下記
→唯一のパソコンからログインできないから、無理。
困った時の/var/log/secure
私みたいにザコエンジニアはSSHでハマまる事からエンジニア業を始めたと言っても過言ではありません。
もうとにかくハマった経験があるので、こーいった時はだいたいSSH接続先サーバの
/var/log/secure を見ればだいたい何か分かるっていう肌感が身についてきます。
仮説④
ホストとゲストの間だけの閉じたネットワークを形成するにはホストオンリーアダプタだけで良い。特に設定しなければ標準で「ホストオンリーアダプタ」での接続になります。
https://qiita.com/ftakao2007/items/0ec05c2ef3c14cdbea11
Vagrantfileに下記の記述をすることで、仮想マシンの IP を固定 IPにできる。(ちなみに私はコメントアウトを外したので、この設定はできているはず。)
config.vm.network "private_network", ip: "192.168.33.10"
https://qiita.com/centipede/items/64e8f7360d2086f4764f
ちなみに、NATというのがVagrantfile のネットワーク初期設定です。同ファイルにネットワークの設定を記述しない場合は、NAT が設定されます。NAT の設定がされた場合、SSH の接続はできず、Virtualbox のターミナルで仮想マシンを操作することになります。
仮説⑤ VirtualBoxに直接入って設定なおすべき?何を直せばいいか分からないけど!
と思ってVirtualBoxに入って設定見てみたが、
・「ケーブル接続」のチェックはついている。
・Warning: Authentication failure. Retrying...にはなってないから秘密鍵が合わないのではない気がするけど、止まるのはいつもsshのところ。
気になるのは、vagrant sshして、ssh_exchange_identification: read: Connection reset
になること。検索すると上記+by peerとかby hostとか出るのに。
https://mimirswell.ggnet.co.jp/blog-261 : SSH auth method: private key Warning: Authentication failure. Retrying...が出たときの対処法
https://vboxmania.net/%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E8%A8%AD%E5%AE%9A/ →VirtualBoxの設定について。
VirtualBoxの設定見たら、「システム設定ページのアクセラレーションセクションでハードウェア仮想化が有効になっていますが、このホストシステムではサポートされていません。仮想化システムを起動するには無効にする必要があります。」ってエラー?が出てる。昔BIOSで仮想化自体は有効にしたはず。何度やっても「設定変更してVT-x/AMD-Vを有効化のチェックを外す」ができない。(外してOK押してもまたチェック付きに戻ってる)いじってたら、ネステッドページングだけ無効にできちゃって、もどらなくなってしまった!
仮説⑥ BIOSの仮想化設定をenebledにする →これで解決!
あほすぎるけど、一応確認してみたらなんとdisabledになってた!そういえばこの前BIOS初期化したからだ!!笑
変えてるじゃん・・・アホすぎる。
調べただけの仮説⑦ 秘密鍵が合ってない?
vagrant sshの代わりの書き方、↓はiオプションが秘密鍵を指定するオプション。
ssh -i (private keyの場所。Vagrant ssh-configのIdentityFileで確認) -p 2222 vagrant@127.0.0.1
sshコマンドは、リモートマシンにSSHでログインし、リモートマシン上でコマンドを実行するコマンドです。
ssh -p 2222 vagrant@192.168.33.10
ssh: connect to host 192.168.33.10 port 2222: Connection timed out
ちなみに、ping [仮想マシン名]で仮想マシンのIPアドレスが分かるらしいけど、コマンドは使えるけど仮想マシン名が不明。
-i 秘密鍵ファイル 秘密鍵ファイル(identityファイル)を指定します。初期設定は、SSHバージョン1は、~/.ssh/identity、SSHバージョン2は、~/.ssh/id_rsa と ~/.ssh/id_dsa。
https://qiita.com/Sanche/items/43d615beef05cd9417e2
「hostの番号は任意。OSが使用中のポートと被らないポート番号を指定しましょう。」の意味が分からない。