Windows+VirtualBox+CentOSの仮想環境に外部から公開鍵ログインできるようにする上でハマったこと
はじめに
VirtualBoxでローカルに環境を構築してゴニョゴニョやっていたのを、
外部マシン(同一ネットワーク)からSSHの公開鍵(パスなし)で接続したくなりました。
その設定でハマったので解決策を共有します。
環境
- Host : Windows 10
- VM : VirtualBox
- Hostの500番PortをGuestの22番Portにポートフォワーディング
- Guest : CentOS 7
結論 : authorized_keysの所有者設定がrootになっていた
私の場合はこれでした。
「SSH接続のハマりどころは権限設定だぞ」と、読み書き権限については気を付けていましたが、
ownerがログインユーザー名ではなかったのをキレイに見落としておりました。
そりゃあ
$ chmod 700 ~/.ssh
$ chmod 600 ~/.ssh/authorized_keys
を何回やっても効かないわけですね。
Webサーバも立てず、完全にローカルのみで動かしていたので、
~/.ssh/authorized_keys
を、一体いつrootで作ったかも定かではないですが、
「SSH接続では権限設定(所有者権限含む)に気を配るべし」という教訓を得ました。
以下は簡単な手順です。必要に応じてsudo
してください。
手順
- 接続元のマシンで鍵ペアを作成する
ssh-keygen
- パスフレーズは特に設定しない
- 1で作成した公開鍵を、接続先Guestの
~/.ssh/authorized_keys
に追記- 接続先で
$ vi ~/.ssh/authorized_keys
してペースト
- 接続先で
- 接続先Guestでsshd_configを編集
$ vi ~/etc/config/sshd_config
PasswordAuthentication yes
をPasswordAuthentication no
に変更- パスワード認証ログインを禁止
- 構文チェック
$ ssh -t
- sshd再起動
$ service ssh restart
- 接続元のマシンから秘密鍵でSSHログインできることを確認
$ ssh -p 500 [username]@[ip address] -i [秘密鍵のパス]
小ネタ : -v
オプションで詳細出力
ssh接続時に -v
オプションをつけることで詳細なログを見ることができます。
デバッグに便利でした。
まとめ
SSH接続設定のときは所有者も含む権限設定に気を配りましょう。
ディスカッション
コメント一覧
まだ、コメントがありません