OS/Linux

[vagrant]생성 후 Permission denied(public key)나오는 오류

The Start of Case

평소처럼 vagrant를 이용해 VM을 생성해서 작업할께 있어서 생성하고 연결 중 다음과 같은 에러를 만났다.

$ vagrant ssh
vagrant ssh fails with error : Permission denied (publickey)

????????

평소에 잘되다가 왜 안되지하다가, 바꾼 Vagrantfile도 살펴보고 googling도 열심히 해본결과 다음과 같은 실수를 했다.


My mistake

현재 나의 Vagrantfile은 다음과 같다.

# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant_API_Version ="2"

Vagrant.configure(Vagrant_API_Version) do |config|
  config.vm.define:"ansible" do |cfg|
     cfg.vm.box = "ubuntu/bionic64"
     cfg.vm.provider:virtualbox do |vb|
       vb.name="ansible"
       vb.customize ["modifyvm", :id, "--cpus", 2]
     vb.customize ["modifyvm", :id, "--memory", 4096]
     end
     cfg.vm.host_name="ansible"
     cfg.vm.synced_folder "./synced_dir", "/home/vagrant"
     cfg.vm.network "public_network", ip: "192.168.0.100", bridge: "en0: Wi-Fi (Wireless)"
     cfg.vm.network "forwarded_port", guest: 22, host: 60100, auto_correct: false, id: "ssh"
   cfg.vm.provision "shell", path: "bootstrap.sh"
  end
end

어디가 문제였는지 딱보면 찾기 되게어렵다. 하지만 vagrant up전 바꿨던 부분은 단한곳! synced_foler부분이다.

cfg.vm.synced_folder "./synced_dir", "/home/vagrant"

원래의 의도는 생성된 vagrant 유저의 홈디렉터리 전체를 sync해서 관리하면 편할꺼같아서했지만 생각지도 못하는 오류가 여기서 발생했다.

유저의 홈디렉터리를 synced_folder하는 순간 .ssh 디렉터리가 vagrant GUI에 의해 덮어쓰기와 삭제를 당한다고 한다. 그래서 아마 없는 키에 계속 host의 private key로 연결을 시도해서 그런것같다.


Solution

일단 현재는 홈디렉터리를 피해서 synced_foler를 구성하는 방향으로 잡았다. provision 단계에서 mkdir로 디렉터리 하나만 생성해주고 거기에 sync를 걸면된다.

cfg.vm.synced_folder "./synced_dir", "/home/vagrant/code" <- code 디렉터리 생성하고 추가



ref

'OS > Linux' 카테고리의 다른 글

[Linux] UTS namespace 맛보기  (1) 2021.04.01
[Linux] SSH timeout Configuration  (0) 2021.01.12
[Linux] Linux timezone 설정 명령어  (0) 2021.01.11