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 |