Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ssh 流浪汉未连接到专用ip地址_Ssh_Server_Vagrant - Fatal编程技术网

Ssh 流浪汉未连接到专用ip地址

Ssh 流浪汉未连接到专用ip地址,ssh,server,vagrant,Ssh,Server,Vagrant,我对宋承宪和流浪汉完全是新手,所以这可能是一个很难回答的问题 我试图通过如下定义我的服务器连接到vagrant上的私有IP地址: config.vm.define "server" do |server| server.vm.network "private_network", ip: "192.168.1.10" server.vm.network :forwarded_port, guest: 3000, host: 3000 server.vm.synced_f

我对宋承宪和流浪汉完全是新手,所以这可能是一个很难回答的问题

我试图通过如下定义我的服务器连接到vagrant上的私有IP地址:

  config.vm.define "server" do |server|
    server.vm.network "private_network", ip: "192.168.1.10"
    server.vm.network :forwarded_port, guest: 3000, host: 3000
    server.vm.synced_folder "./sync_folder", "/vagrant"
  end
在那之后,所有的流浪汉都执行了命令。 但是当我在命令行上输入vagrant ssh config时

Host server
  HostName 127.0.0.1
  User ubuntu
  Port 2222
  UserKnownHostsFile /dev/null
  StrictHostKeyChecking no
  PasswordAuthentication no
  IdentityFile /Users/xxxx
  IdentitiesOnly yes
  LogLevel FATAL

它返回的是本地ip地址,而不是我想要的私有ip地址。我不明白为什么…

这就是vagrant的工作原理,实际上它创建了多个网络接口,因此您不一定能从主机上看到预期的网络接口

如果查看
vagrant up
命令的输出,您将看到以下内容

...
==> default: Waiting for machine to boot. This may take a few minutes...
    default: SSH address: 127.0.0.1:2222
...
因此,很明显,要将ssh连接到VM中,它将使用端口22上的环回地址

如果您转到虚拟机并查看网络接口

enp0s3    Link encap:Ethernet  HWaddr 02:58:f3:11:f2:f2
          inet addr:10.0.2.15  Bcast:10.0.2.255  Mask:255.255.255.0
          inet6 addr: fe80::58:f3ff:fe11:f2f2/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:22381 errors:0 dropped:0 overruns:0 frame:0
          TX packets:10950 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:17387008 (17.3 MB)  TX bytes:690514 (690.5 KB)

enp0s8    Link encap:Ethernet  HWaddr 08:00:27:1f:f8:27
          inet addr:192.168.33.10  Bcast:192.168.33.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:fe1f:f827/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:3 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:522 (522.0 B)  TX bytes:648 (648.0 B)
第一个接口是NAT,这是vagrant用来在主机和VM之间进行通信(ssh)的接口,因此这个接口与给定端口上主机的环回绑定(默认为22,但如果您有多个VM运行,vagrant将定义另一个端口)

第二个接口是您从Vagrant文件中设置并分配了IP的接口

您可能会争辩说,
vagrant ssh config
没有显示所有网络接口属性,但实际上这只是ssh属性,这样输出是正确的。如果要获取网络属性,需要查看VM


PS:最后一点注意,如果你给你的虚拟机分配了一个私有IP,你不需要转发端口,因为你将直接使用它的IP到达虚拟机。

这与堆栈溢出->上的另一个问题非常相似,但答案似乎对你不起作用,请参见!谢谢你的回答,我花了将近一个小时试图解决一个不存在的问题。我在虚拟机上安装了concourse,我在Mac上使用Vagrant。我已经为vm分配了一个静态IP,但是当我在浏览器上点击IP:8080时,我得到了“无法访问”错误。我有NAT和仅主机适配器。