Không thể ssh trong một môi trường mơ hồ nhiều máy


9

Tôi đã tạo ra một môi trường mơ hồ đa máy ba nút và đang gặp sự cố từ vm này sang vm khác.

Đây là Vagrantfile:

Vagrant.configure("2") do |config| 
  config.vm.box = "centos/7"

  config.vm.define "master" do |master|
    master.vm.hostname = "master.local" 
    master.vm.network "private_network", type: "dhcp"
  end 

  config.vm.define "node1" do |node1|
     node1.vm.hostname = "node1.local" 
     node1.vm.network "private_network", type: "dhcp" 
  end 

  config.vm.define "node2" do |node2|
    node2.vm.hostname = "node2.local" 
    node2.vm.network "private_network", type: "dhcp" 
  end  
end 

Tệp máy chủ (giống nhau trên mỗi nút):

$ cat /etc/hosts
172.28.128.3    master.local    master
172.28.128.4    node1.local     node1
172.28.128.5    node2.local     node2

Tôi có thể ping qua lại cả ngày từ bất kỳ máy nào sang máy khác nhưng tôi không thể ssh từ vm này sang máy khác. Thông báo lỗi điển hình là (từ nút1 đến chủ):

[vagrant@node1.local] $ ssh vagrant@172.28.128.3
Permission denied (publickey,gssapi-keyex,gssapi-with-mic) 

SSH đang chạy và cổng được mở.

Tường lửa không chạy.

Tôi chắc chắn điều này phải làm với các phím ssh. Tôi dễ dàng thừa nhận tôi không phải là một chuyên gia.
Tôi đang làm gì sai ở đây vậy mọi người?


Cập nhật. Vâng, từ vm này sang vm khác trong một môi trường mơ hồ. Nó không quan trọng từ vm này đến vm khác, một cái gì đó không chính xác.
HBach

Bạn cần khóa riêng của vagrant trong máy, không thể nhớ nó được lưu ở đâu trong máy chủ vagrant nhưng người dùng vagrant được cấu hình để chỉ cho phép truy cập dựa trên khóa. (sử dụng khóa mặc định không được khuyến nghị trong các thử nghiệm rõ ràng)
Tensibai

@Tensibai Một người cũng có thể đăng nhập mà không cần chìa khóa ssh vagrant@hostvà sử dụng vagrantlàm mật khẩu.
030

Vui lòng thêm đầu ra của ip atất cả các hộp vào câu hỏi và kiểm tra xem các địa chỉ IP (172.28.128.3-5) có khả dụng khi các hộp bị hỏng không.
030

1
@ 030 theo thông báo trong câu hỏi, các hộp centos, không giống như Ubuntu, không đặt mật khẩu mơ hồ, chỉ cho phép xác thực khóa
Tensibai

Câu trả lời:


3

Theo dõi tập tin Vagrant vấn đề này.

Bạn có thể nhận được tất cả các tệp chính hỗ trợ cùng với tệp mơ hồ này tại https://github.com/malyabee/IaaC/tree/master/ansible_lab

$commonscript = <<-SCRIPT
sudo yum update -y
sudo yum install python2 epel-release -y
sudo yum install -y ansible
sudo echo "192.168.22.10    ansiblecontroller.example.com ansiblecontroller" >> /etc/hosts
sudo echo "192.168.22.11   node01.example.com   node01" >> /etc/hosts
sudo echo "192.168.22.12   node02.example.com      node02" >> /etc/hosts
SCRIPT

$nodescript = <<-SCRIPT
cat /vagrant/ansible_lab.pub >> /home/vagrant/.ssh/authorized_keys
SCRIPT

$ansiblescript = <<-SCRIPT
sudo yum install ansible -y
sudo cp -r /vagrant/ansible_lab /home/vagrant/.ssh/id_rsa
sudo chmod 400  /home/vagrant/.ssh/id_rsa
sudo chown vagrant:vagrant /home/vagrant/.ssh/id_rsa
SCRIPT

Vagrant.configure("2") do |config|
  config.vm.provision "shell", inline: "echo Hello"

  config.vm.define "ansiblecontroller" do |ansiblecontroller|
    ansiblecontroller.vm.box = "centos/7"
    ansiblecontroller.vm.provider "virtualbox" do |v|
          v.memory = 512
          v.cpus = 1
       end
    ansiblecontroller.vm.network "private_network", ip: "192.168.22.10", virtualbox__intnet: "mynetwork01"
    ansiblecontroller.vm.hostname = "ansiblecontroller.example.com"
    # Installing required packages for ansible controller node
    ansiblecontroller.vm.provision "shell", inline: $commonscript
    ansiblecontroller.vm.provision "shell", inline: $ansiblescript
  end

  config.vm.define "node01" do |node01|
    node01.vm.box = "centos/7"
    node01.vm.provider "virtualbox" do |v|
          v.memory = 512
          v.cpus = 1
       end
    node01.vm.network "private_network", ip: "192.168.22.11", virtualbox__intnet: "mynetwork01"
    node01.vm.hostname = "node01.example.com"
    # Installing required packages for  node01
    node01.vm.provision "shell", inline: $commonscript
    node01.vm.provision "shell", inline: $nodescript
  end
  config.vm.define "node02" do |node02|
    node02.vm.box = "centos/7"
    node02.vm.provider "virtualbox" do |v|
          v.memory = 512
          v.cpus = 1
       end
    node02.vm.network "private_network", ip: "192.168.22.12", virtualbox__intnet: "mynetwork01"
    node02.vm.hostname = "node02.example.com"
    # Installing required packages for  node01
    node02.vm.provision "shell", inline: $commonscript
    node02.vm.provision "shell", inline: $nodescript
  end
end

Đây là một câu trả lời đầy đủ chức năng, cảm ơn!
moztemur

Đã chuyển kho lưu trữ mã sang github.com/malyabee/vagrant_ansible_lab
MalyaBee

2

Theo các tài liệu người ta nên sử dụng:

vagrant ssh [name|id]

Nếu có một nút thì sử dụng vagrant sshvà trong trường hợp đa nút xác định tên hoặc id của VM, vdvagrant ssh box1

Nếu người ta muốn ssh giữa các hộp thì người ta có thể tạo khóa ssh và cung cấp khóa riêng cho mỗi hộp và thêm khóa chung vào tệp ủy quyền.

https://www.vagrantup.com/docs/provisioning/file.html

Vagrant.configure("2") do |config|
  # ... other configuration

  config.vm.provision "file", source: "~/.gitconfig", destination: ".gitconfig"
end

Làm thế nào bạn sẽ sử dụng vagrant ssh nametrong một hộp? Câu hỏi là về kết nối bởi ssh từ node1.local đến master.local, cả hai máy đều quay cuồng bởi vagrant.
Tensibai

đó đã là những gì đã được nêu dưới câu trả lời đã bị xóa của bạn bên dưới ...
Tensibai

Tôi sẽ cập nhật câu trả lời
030

0

Hãy thử liên kết này . Bạn cần phải thực hiện một trong những điều sau đây:

  • ssh -i <pathto/private_key> <vagrant>@<ip>
  • ssh -o PreferredAuthentications=password user@server-ip (nếu bạn chưa tắt xác thực dựa trên mật khẩu)
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.