ssh between 2 servers using their names rather than their ips

109 views
Skip to first unread message

LIRAN Y

unread,
Oct 29, 2017, 1:57:44 PM10/29/17
to Vagrant

I would like to ssh between the servers using their names rather than their ips. 

for example

in order to test this, run i need to vagrant ssh server1 and from their i should be able to run ssh server2 to the second server.


i have the vagrantfile configure that way:

servers=[



{

 
:hostname => "server1",

 
:ip => "192.168.100.10",

 
:box => "hashicorp/precise64",

 
:ram => 512,

 
:cpu => 1,




},

{

 
:hostname => "server2",

 
:ip => "192.168.100.11",

 
:box => "hashicorp/precise64",

 
:ram => 512,

 
:cpu => 1,

}


]




Vagrant.configure(2) do |config|

  servers
.each do |machine|

    config
.vm.define machine[:hostname] do |node|

        machine
[:provisions].each do |script|

           node
.vm.provision :shell, :path => script

       
end

      node
.vm.box = machine[:box]

      node
.vm.hostname = machine[:hostname]

      node
.vm.network "private_network", ip: machine[:ip]

      node
.vm.provider "virtualbox" do |vb|

        vb
.memory = machine[:ram]

        vb
.cpus = machine[:cpu]

     
end

   
end

 
end

end


i tried to enter the server 1 by vagrant ssh server1

and there i did ssh server2 but it ask me for a password?

how can i enter without password?


10x

Alvaro Miranda Aguilera

unread,
Oct 30, 2017, 4:25:58 AM10/30/17
to vagra...@googlegroups.com
Hello

the easiest way is to add a entry into /etc/hosts with other server ip name

you can use the same shell script for this.

Virusvrij. www.avast.com

--
This mailing list is governed under the HashiCorp Community Guidelines - https://www.hashicorp.com/community-guidelines.html. Behavior in violation of those guidelines may result in your removal from this mailing list.
 
GitHub Issues: https://github.com/mitchellh/vagrant/issues
IRC: #vagrant on Freenode
---
You received this message because you are subscribed to the Google Groups "Vagrant" group.
To unsubscribe from this group and stop receiving emails from it, send an email to vagrant-up+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/vagrant-up/c7500ffd-e168-4987-b1f1-16aca8219ded%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.



--
Alvaro

LIRAN Y

unread,
Oct 31, 2017, 3:49:01 AM10/31/17
to Vagrant
Hi Alvaro 
10x for your replay

i tried to enter this in the 
etc/host/
192.168.100.11 server2
Do i need some restart?

still it ask me for pw:

$ vagrant ssh server1
Welcome to Ubuntu 12.04 LTS (GNU/Linux 3.2.0-23-generic x86_64)

 * Documentation:  https://help.ubuntu.com/
Welcome to your Vagrant-built virtual machine.
Last login: Sun Oct 29 21:07:27 2017 from 10.0.2.2
vagrant@server1:~$ ssh server2
vagrant@server2's password:
To unsubscribe from this group and stop receiving emails from it, send an email to vagrant-up+...@googlegroups.com.



--
Alvaro

Alvaro Miranda Aguilera

unread,
Oct 31, 2017, 5:49:01 AM10/31/17
to vagra...@googlegroups.com
Hello there

so are different things here at play.

One is Vagrant is a tool that help you to do stuff, but what to do, or how to do it, requires the knowledge.

I will explain from the basics, in case other people came here in the future.

When you have a multi machine Vagrant file, the Vms are independent, and you have lots of moving parts and the VMs don't know each other, etc.

using names intead of ip, requires name resolution, so your Vagrantfile can use a script to populate the /etc/hosts
then to be able to ssh into, requires both machines (or more machines) to have a public/private key and allow access to those private keys.


Here is a working Vagrantifle i have just did that have all what you want to do, feel free to copy/edit
feel free to ask questions too:


gist:






numnodes=2
baseip="192.168.10"

#global script
$global = <<SCRIPT

#check for private key for vm-vm comm
[ -f /vagrant/id_rsa ] || {
  ssh-keygen -t rsa -f /vagrant/id_rsa -q -N ''
}

#deploy key
[ -f /home/vagrant/.ssh/id_rsa ] || {
    cp /vagrant/id_rsa /home/vagrant/.ssh/id_rsa
    chmod 0600 /home/vagrant/.ssh/id_rsa
}

#allow ssh passwordless
grep 'vagrant@node' ~/.ssh/authorized_keys &>/dev/null || {
  cat /vagrant/id_rsa.pub >> ~/.ssh/authorized_keys
  chmod 0600 ~/.ssh/authorized_keys
}

#exclude node* from host checking
cat > ~/.ssh/config <<EOF
Host node*
   StrictHostKeyChecking no
   UserKnownHostsFile=/dev/null
EOF

#populate /etc/hosts
for x in {11..#{10+numnodes}}; do
  grep #{baseip}.${x} /etc/hosts &>/dev/null || {
      echo #{baseip}.${x} node${x##?} | sudo tee -a /etc/hosts &>/dev/null
  }
done

#end script
SCRIPT

Vagrant.configure("2") do |config|
  config.vm.provision "shell", privileged: false, inline: $global
  prefix="node"
  #node box
  (1..numnodes).each do |i|
    vm_name = "#{prefix}#{i}"
    config.vm.define vm_name do |node|
      node.vm.box = "hashicorp/precise64"
      node.vm.hostname = vm_name
      ip="#{baseip}.#{10+i}"
      node.vm.network "private_network", ip: ip
    end
  end
end





To unsubscribe from this group and stop receiving emails from it, send an email to vagrant-up+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/vagrant-up/a8a85dc1-0b98-4f12-b5a6-aac402a3733b%40googlegroups.com.

For more options, visit https://groups.google.com/d/optout.



--
Alvaro

LIRAN Y

unread,
Nov 1, 2017, 2:18:37 AM11/1/17
to Vagrant
Alvaro
Great thank you for the answer i will try it
another thing i am trying to enter to the ip address of the server1 http://192.168.100.10/ throw the web browser but i get "site can’t be reached 192.168.100.10 refused to connect."
i tried to set in the vagranfile instead of:
      node.vm.network "private_network", ip: machine[:ip]
i tried:
      config.vm.network "forwarded_port", guest: 80, host: 8080

but nothing change...



--
Alvaro

Alvaro Miranda Aguilera

unread,
Nov 1, 2017, 4:16:34 AM11/1/17
to vagra...@googlegroups.com
if the port is 8080 then you need http://[ip]:8080

if you forward 80 -> 80 then you can use the ip without the port

To unsubscribe from this group and stop receiving emails from it, send an email to vagrant-up+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/vagrant-up/66a6a810-659e-4f9f-ba2b-789ce4ab14f8%40googlegroups.com.

For more options, visit https://groups.google.com/d/optout.



--
Alvaro

LIRAN Y

unread,
Nov 1, 2017, 5:36:33 AM11/1/17
to Vagrant
The port 80 is for guest to enter the ip address from web page am i right?
where can i see the host port?



--
Alvaro

Alvaro Miranda Aguilera

unread,
Nov 1, 2017, 5:57:46 AM11/1/17
to vagra...@googlegroups.com
Not sure if I understand, but the names in the conf say what they are:

doc:


 config.vm.network "forwarded_port", guest: 80, host: 8080

guest 80 goes to host 8080

host is your physical computer
guest is the VM

so if you go to port 8080 on the host, you will reach port 80 in the guest


that is port forwarding, ie http://localhost:8080

if you have a fixed IP in the guest then you are not using that and you can reach the services directly on the guest.

ie. ip 10.10.10.11 something running on port 80 will be  http://10.10.10.10

for this to work, the server/service int he guest need to be bind/listening to that/any ip

you can check with

netstat -anp | grep -i listen

if only says 127.0.0.0 for port 80, then port forward will work

for private_network/public_network the listen should be 0.0.0.0

depending on the webserver some configuration need to be adjusted to override the defaults, I suggest check documentation of the product.

Thanks
alvaro

Virusvrij. www.avast.com

To unsubscribe from this group and stop receiving emails from it, send an email to vagrant-up+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/vagrant-up/9767f900-aaea-490a-bd20-ca5569a807a2%40googlegroups.com.

For more options, visit https://groups.google.com/d/optout.



--
Alvaro

Reply all
Reply to author
Forward
0 new messages