簡體   English   中英

ssh:連接到主機github.com端口22:將VM復制到另一台主機后,網絡無法訪問

[英]ssh: connect to host github.com port 22: Network is unreachable after copying VM to another host machine

我剛剛將Vagrant VM從一台主機復制到另一台主機。 兩台機器都運行Windows 7。

嘗試訪問Github時,我將VM復制到的機器上出現以下錯誤。

該倉庫肯定存在,並且我在原始機器上具有完全相同的Git配置。 為什么會這樣? 此錯誤的最佳答案對我沒有影響。

[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.

我可以ping Github,當我將URL更改為https時,得到以下信息:

[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

我的流浪檔案

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

首先 ,您是否驗證了它不是來自新主機的網絡問題,可以從新主機上的vm ping github嗎?

其次 ,如果ssh有問題(並且您不是像我這樣的網絡專家,它可能是新主機上的防火牆問題...),則可以更改為使用https版本

run `git config --local -e`

你應該有一節

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

您可以將其更改為

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

第三 ,確保兩台主機上的vagrant版本相同(特別是如果一台主機運行vagrant 1.6而另一台主機運行1.7),則如果虛擬盒不同,則虛擬盒應該可以,但如果您使用虛擬盒的版本不同,則請更新GuestAdditions。

我通過在以下Virtualbox設置中創建一個新的Virtual Box-Only Only Adapter解決了此問題:

在此處輸入圖片說明

原始的未被識別,因此我不得不創建一個新的。

其次,正如FredericHenri在下面指出的那樣-在我的原始主機(Win 7 PC)上,我正在運行Virtualbox 4.3.12,而在第二台主機(Win 7筆記本電腦)上,我正在運行Virtualbox 4.3.16-所以我也降級了第二台主機。這樣就解決了問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM