パスワードなしの ssh を vagrant に実行して、vagrant ssh 後に別のユーザーをロードする

パスワードなしの ssh を vagrant に実行して、vagrant ssh 後に別のユーザーをロードする

Vagrant ボックス (trusty64) に新しいユーザーがいて、SSH で接続しようとしています。vagrantその後、ユーザーにログインするのではなくvagrant up、ユーザー名にログインしたいです。

これまでやってきたこと

  1. ゲストマシンにユーザーを作成しました。
  2. ホストにSSHキーを作成しましたssh-keygen
  3. SSHキーをゲストにコピーしましたssh-copy-id -p 2222 -i [email protected]

Vagrantfileの部分は次のようになります

  config.vm.box = "ubuntu/trusty64"
  config.ssh.username = "shash"
  config.ssh.forward_agent = true
  config.ssh.private_key_path = "~/.ssh/authorized_keys"

直接ログインすることはできますが、次のエラーが表示され続けますssh -p '2222' '[email protected]'vagrant up

default: Warning: Connection timeout. Retrying...
default: Warning: Authentication failure. Retrying...
default: Warning: Authentication failure. Retrying...

これを解決するための助けがあれば本当にありがたいです。ありがとうございます!

答え1

config.ssh.private_key_pathは秘密鍵ファイルを指す必要があります(通常は~/.ssh/id_rsa、 を実行するとファイル名が表示されますssh-keygen)。ない ~/.ssh/authorized_keys

答え2

これを実現する別の方法は、 の末尾に次のコードを追加することです~vagrant/.bashrc

ssh chsc
exit

SSH キーの作成とインストールの手間を省きたい場合は、代わりに を使用できますsu。ただし、ボックス内から外部サーバーに接続する必要がある場合、Vagrant ボックス内で SSH フォワード エージェントを使用することはできませんssh

sudo su chsc
exit

このような変更を行う際は、~vagrant/.bashrcエラーが発生するとシェルからロックアウトされるリスクがあります。すべてが機能することを確認するまで、 としてログインした状態でターミナルを開いたままにしておくことをお勧めしますvagrant。問題が発生した場合は、.bashrc ( ) の名前を変更してくださいmv .bashrc .bashrc-bak

関連情報