はじめに
minikube上の状況を確認したり、ローカルからファイルを配置する時に便利なのがSSH/SCPです。
本記事では「minikube ssh」で何故SSHができるのかというところから掘り下げて説明し、最後に手順を紹介します。
minikube sshでSSHができる仕組み
minikubeが起動している状態で以下コマンドを打てばminikubeにログインできます。
$ minikube ssh
この仕組みとしては.minikubeディレクトリ配下にあるconfigに示されている情報を元にSSHをしています。
"Driver": { "IPAddress": "192.168.99.100", "MachineName": "minikube", "SSHUser": "docker", "SSHPort": 60727, "SSHKeyPath": "C:\\cygwin64\\home\\XX\\.minikube\\machines\\minikube\\id_rsa",
実際にログインすると上記のid_rsaに対応するid_rsa.pubがminikubeのdockerユーザのauthorized_keysに登録されていることが確認できます。起動時に自動的に登録されているようです。
$ cat /home/docker/.ssh/authorized_keys ssh-rsa ...
SSHの方法/SCPの方法
よってSSHの方法は以下で
$ ssh -i C:\\cygwin64\\home\\XX\\.minikube\\machines\\minikube\\id_rsa docker@192.168.99.100
SCPの方法は以下です。
$ scp -i C:\\cygwin64\\home\\XX\\.minikube\\machines\\minikube\\id_rsa hoge.txt docker@192.168.99.100:~
秘密の鍵の指定に関しては長いため以下コマンドを利用して
$ minikube ssh-key C:\cygwin64\home\XX\.minikube\machines\minikube\id_rsa
以下のように短縮することも可能です。
$ ssh -i $(minikube ssh-key) docker@192.168.99.100
注意点
minikubeを再起動すると以下のようにホスト確認でsshに失敗するケースがあります。
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-the-middle attack)! It is also possible that a host key has just been changed. The fingerprint for the ECDSA key sent by the remote host is XX. Please contact your system administrator. Add correct host key in /home/XX/.ssh/known_hosts to get rid of this message. Offending ECDSA key in /home/XX/.ssh/known_hosts:2 ECDSA host key for 192.168.99.100 has changed and you have requested strict checking. Host key verification failed. lost connection
その場合は以下から上記IPの情報を消してあげるとうまくログインできます。
vi ~/.ssh/known_hosts
終わりに
以下コマンドで簡単にログインできるので深く考えることもないですが
$ minikube ssh
流れはUNIX機のSSH認証と同じで、ただそれを省略しているだけということが分かればトラブルシューティング等でも役立つと思います。
以上、ご参考になれば幸いです。