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
Ruby on rails 除了ssh所需的配置之外,还需要哪些其他配置来允许Capistrano访问Vagrant VM?_Ruby On Rails_Ssh_Vagrant_Capistrano - Fatal编程技术网

Ruby on rails 除了ssh所需的配置之外,还需要哪些其他配置来允许Capistrano访问Vagrant VM?

Ruby on rails 除了ssh所需的配置之外,还需要哪些其他配置来允许Capistrano访问Vagrant VM?,ruby-on-rails,ssh,vagrant,capistrano,Ruby On Rails,Ssh,Vagrant,Capistrano,使用最新的Capistrano(v3.11.0)、Vagrant(v2.1.2)和Rails(v5.2.0) 通过将vagrant ssh-config的输出附加到~/.ssh/config,我能够通过一个“真正的”ssh会话(不仅仅是通过vagrant ssh)将ssh连接到虚拟机中: devbox$sshvagrant@myvm 但是,Capistrano无法连接。例如,使用stock Capistrano任务失败,出现以下SSHKit错误: devbox $ cap staging git

使用最新的Capistrano(v3.11.0)、Vagrant(v2.1.2)和Rails(v5.2.0)

通过将
vagrant ssh-config
的输出附加到~/.ssh/config,我能够通过一个“真正的”ssh会话(不仅仅是通过
vagrant ssh
)将ssh连接到虚拟机中:

devbox$sshvagrant@myvm

但是,Capistrano无法连接。例如,使用stock Capistrano任务失败,出现以下SSHKit错误:

devbox $ cap staging git:check

Traceback (most recent call last):
<stuff snipped>

cap aborted!
SSHKit::Runner::ExecuteError: Exception while executing as vagrant@cvong: getaddrinfo: nodename nor servname provided, or not known

Caused by:
SocketError: getaddrinfo: nodename nor servname provided, or not known
Capistrano显然正在查找VM的名称,因为“vagrant@myvm“出现在SSHKit错误中。但是,ssh_选项部分似乎缺少一些内容,因此Capistrano无法登录。很明显,这似乎对大多数人都有效,那么我犯了什么愚蠢的错误呢


非常感谢您的指点

如果可以,我会把这个标记为“已回答”。对于默认的vagrant用户,永远无法实现这一点,但是在设置了一个普通用户和使用SSH密钥之后——最重要的是,通过删除服务器定义并简单地使用角色语法,Capistrano不再以同样的方式无法访问vagrant VM。第二个问题是,Capistrano3不再像Capistrano2那样支持从本地git存储库推送,但这是另一场战斗。
server "myvm",
  user: 'vagrant',
  roles: %w{app db web},
  primary: true,
  ssh_options: {
    forward_agent: true,
    keys: ['~/.vagrant.d/insecure_private_key'],
    port: '2222',
    host_name: 'myvm'
  }