ssh: connect to host github.com port 22: Network i

2019-08-15 04:35发布

I have just copied my Vagrant VM from one host machine to another. Both machines are running Windows 7.

One the machine I copied the VM to I get the following error when attempting to access Github.

The repo definitely exists and I have the exact same Git config on the original machine. Why would this happen? The top SO answer for this error has no effect for me.

[vagrant@localhost /var/www/wrestlemaniamainevent]# git remote -v
origin  git@github.com:crmpicco/wrestlemaniamainevent.git (fetch)
origin  git@github.com:crmpicco/wrestlemaniamainevent.git (push)

[vagrant@localhost /var/www/wrestlemaniamainevent]# git fetch origin
ssh: connect to host github.com port 22: Network is unreachable
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

I can ping Github and when I change the URLs to https, I get this:

[vagrant@localhost /var/www/wrestlemaniamainevent]# ping github.com
PING github.com (192.30.252.129) 56(84) bytes of data.
64 bytes from 192.30.252.129: icmp_seq=23 ttl=51 time=112 ms
64 bytes from 192.30.252.129: icmp_seq=24 ttl=51 time=110 ms
64 bytes from 192.30.252.129: icmp_seq=25 ttl=51 time=112 ms
64 bytes from 192.30.252.129: icmp_seq=26 ttl=51 time=111 ms
64 bytes from 192.30.252.129: icmp_seq=27 ttl=51 time=112 ms
^C
--- github.com ping statistics ---
27 packets transmitted, 5 received, 81% packet loss, time 26010ms
rtt min/avg/max/mdev = 110.904/111.957/112.869/0.756 ms
[vagrant@localhost /var/www/wrestlemaniamainevent]# git fetch origin
fatal: unable to access 'https://github.com/crmpicco/wrestlemaniamainevent.git/': Failed connect to github.com:443; Network is unreachable

My Vagrantfile

unless Vagrant.has_plugin?("vagrant-host-shell")
  raise 'vagrant-host-shell plugin is not installed!'
end

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

# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
VAGRANTFILE_API_VERSION = "2"

PRIVATE_NETWORK_IP = "10.0.0.200"

SERVER_NAME = "crmpicco.dev"

nfs_setting = RUBY_PLATFORM =~ /darwin/ || RUBY_PLATFORM =~ /linux/

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
    # Disable automatic box update checking. If you disable this, then
    # boxes will only be checked for updates when the user runs
    # `vagrant box outdated`. This is not recommended.
    # config.vm.box_check_update = false

    config.ssh.forward_agent = true

    config.vm.define "local", primary: true do |local|

        nfs_setting = RUBY_PLATFORM =~ /darwin/ || RUBY_PLATFORM =~ /linux/

        local.vm.network :forwarded_port, guest:4444, host:4444
        local.vm.network :private_network, ip: PRIVATE_NETWORK_IP

        local.vm.box = "crmpicco-centos7"
        local.vm.box_url = "http://crmpicco.com/boxes/crmpicco.box"

# If you want to keep your code local and mount onto your VM, uncomment this.
#
#        local.vm.synced_folder "./../www", "/var/www", id: "vagrant-root" , :nfs => nfs_setting,
#            mount_options: ["sync,rsize=32768,wsize=32768,rw,proto=tcp"]

        local.vm.provider :virtualbox do |v|
            v.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
            v.customize ["modifyvm", :id, "--memory", 3072]
            v.customize ["modifyvm", :id, "--cpus", 2]
            v.customize ["modifyvm", :id, "--name", SERVER_NAME]
        end
    end


# If you want to keep your code local and mount onto your VM, comment this whole section
     if nfs_setting
            config.vm.provision :host_shell do |host_shell|
              host_shell.inline = 'mkdir -p /Users/Shared/crmpicco'
            end

            config.vm.provision :host_shell, run: "always" do |host_shell|
              host_shell.inline = "echo 'Waiting for NFS to be available, it can take a while'"
            end

            config.vm.provision :host_shell, run: "always" do |host_shell|
              host_shell.inline = "sleep 30"
            end

            config.vm.provision :host_shell, run: "always" do |host_shell|
              host_shell.inline = "mount -t nfs -o 'sync,rsize=32768,wsize=32768,rw' #{PRIVATE_NETWORK_IP}:/var/www/current /Users/Shared/crmpicco"
            end
     end

end

2条回答
欢心
2楼-- · 2019-08-15 04:51

First, did you verify its not a network issue from the new host, can you ping github from the vm on the new host ?

Second, if ssh has an issue (and you're not much of a network guy like me - it could be firewall issue on the new host ...), you can change to use the https version

run `git config --local -e`

you should have a section

[remote "origin"]
    url = git@github.com:crmpicco/wrestlemaniamainevent.git

you can change that to

[remote "origin"]
    url = https://github.com/crmpicco/wrestlemaniamainevent.git

Third, make sure vagrant is same version on both host (specially if one host runs vagrant 1.6 and the other 1.7), virtual box should be ok if different but do update the GuestAdditions if you have different version with virtual box.

查看更多
祖国的老花朵
3楼-- · 2019-08-15 04:58

I resolved this issue by creating a new Virtual Box Host-Only Adapter in the Virtualbox settings, here:

enter image description here

The original one wasn't recognised, so I had to create a new one.

Secondly, as FredericHenri pointed out below - on my original host (Win 7 PC) I was running Virtualbox 4.3.12, whereas on the second host (Win 7 laptop) I was running Virtualbox 4.3.16 - so I downgraded the second host too and this resolved the issue.

查看更多
登录 后发表回答