2018-07-14_Vagrantで作成した仮想環境に別クライアントからsshする

このページでわかること

  • vagrantを実行しているホストではなく、同ネットワークの他クライアントからsshアクセスする方法

最近vagrantが私の中でアツいッ!のですが、デスクトップのホストOS上で起動した環境にノートPCからsshしたい事がよくありました。デフォルトだと上手くいかないので実施方法をまとめました。

結論としては簡単でsshdのconfigを編集してパスワード認証を有効にします。

環境

  • ホスト: Windows10 Prot v1803
  • ゲスト: CentOS Linux release 7.5.1804 (Core)
  • Vagrant 2.1.2

なぜ接続できないか(原因)

vagrantでは公開鍵認証方式でssh接続をしてます。vagrant up時にホストOSの秘密鍵から公開鍵を作成しゲストOSにコピーされます。この流れがユーザーが意識せずに行われるのでvagrant sshでゲストOSへログインできます。 ですが他クライアントからだと秘密鍵がないのでそのままではログインできません。これが今回の他のクライアントから接続できない原因となります。

対応方法

秘密鍵を用意するかsshdの設定でパスワード認証を有効にする必要があります。今回は後者のパスワード認証を有効化する方法を採用しました。なおローカルの突発的に建てる検証環境なのでセキュリティは加味してません

設定の変更

/etc/ssh/sshd_configPasswordAuthentication noをyesに変更します。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
##c sedで該当箇所を書き換える(変更前は.bakで保存)
#r sed -i.bak s/"^PasswordAuthentication no"/"PasswordAuthentication yes"/ /etc/ssh/sshd_config

##c 変更箇所をdiff比較
#r diff /etc/ssh/sshd_config.bak /etc/ssh/sshd_config
65c65
< PasswordAuthentication no
---
> PasswordAuthentication yes

##c sshdを再起動
#r systemctl restart sshd

接続の確認

ほかクライアントからsshでログインできれば設定完了です。

1
ssh vagrant@${ip_addr}