通常vagrant upコマンド実行後にvagrant sshコマンドを実行すれば、Vagrantの仮想マシンに接続できます。
しかし、場合によってはsshコマンドでvagrantに接続したくなることもあるでしょう。
この記事では、鍵認証を使用した方法とパスワード認証を使用したssh接続の方法について紹介します。
鍵認証でssh接続を行う
まずVagrantfileのあるディレクトリで仮想マシンを起動します。
vagrant up
次に以下のコマンドを実行し、vagrantの仮想マシンの接続先情報を表示します。
※ vagrant upコマンド実行後、Vagrantfileファイルのあるディレクトリで実行します。
vagrant ssh-config
Host default
  HostName 127.0.0.1
  User vagrant
  Port 2222
  UserKnownHostsFile /dev/null
  StrictHostKeyChecking no
  PasswordAuthentication no
  IdentityFile /Users/hogeuser/MyVagrant/centos8/.vagrant/machines/default/virtualbox/private_key
  IdentitiesOnly yes
  LogLevel FATAL
上記の接続情報を元に、ssh コマンドで接続します。
ssh -p 2222 vagrant@127.0.0.1 -i /Users/hogeuser/MyVagrant/centos8/.vagrant/machines/default/virtualbox/private_key
パスワード認証でssh接続を行う
Vagrant仮想マシンの/etc/ssh/sshd_config の設定を変更することでパスワード認証を行うことができます。
※ パスワード認証を行うにはsshd_configのPasswordAuthenticationの設定がyesとなっている必要がある。
まず、vagrantの仮想マシンへログインします。
vagrant ssh
sshで接続するユーザーのパスワードを設定します。(既にパスワードが設定されている場合は実施不要です)
sudo passwd [ユーザー名]
vi で「/etc/ssh/sshd_config」を開きます。
開いたら/の後にPasswordAuthenticationを入力すると次の行が見つかります(CentOS8)
# To disable tunneled clear text passwords, change to no here!
#PasswordAuthentication yes
#PermitEmptyPasswords no
PasswordAuthentication no
PasswordAuthenticationをyesに設定します。
# To disable tunneled clear text passwords, change to no here!
PasswordAuthentication yes
#PermitEmptyPasswords no
#PasswordAuthentication no
escキー押下後、:wq!で設定を保存したらsshdを再起動します。
sudo systemctl restart sshd
ローカル端末に戻り、以下のようにコマンドを実行するとパスワード認証を行えるようになります。
ssh -p 2222 vagrant@127.0.0.1
vagrant@127.0.0.1's password: 
Last login: Mon Aug 16 23:23:35 2021 from 10.0.2.2
[vagrant@centos8 ~]$ 
sshコマンドで使用している接続先についてはローカル端末でvagrant ssh-config(※)を実行すると確認することができます。
※ Vagrantfileファイルのあるディレクトリでvagrant upコマンド実行後(実行済みであれば不要)に実行
Host default
  HostName 127.0.0.1
  User vagrant
  Port 2222
  UserKnownHostsFile /dev/null
  StrictHostKeyChecking no
  PasswordAuthentication no
  IdentityFile /Users/hogeuser/MyVagrant/centos8/.vagrant/machines/default/virtualbox/private_key
  IdentitiesOnly yes
  LogLevel FATAL