为什么它不允许我从 Ansible 安装 Tomcat?
Why it won't let me install Tomcat from Ansible?
我正在学习使用 Ansible 安装 Tomcat,我已经安装了 Ansible,创建并复制了 ssh 密钥,写了一个剧本,但是当我尝试 运行 这个剧本时,它给了我以下错误:
<192.168.29.13> ESTABLISH CONNECTION FOR USER: root
<192.168.29.13> REMOTE_MODULE setup
<192.168.29.13> EXEC ssh -C -tt -vvv -o ControlMaster=auto -o ControlPersist=60s -o ControlPath="/home/fni/.ansible/cp/ansible-ssh-%h-%p-%r" -o StrictHostKeyChecking=no -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=root -o ConnectTimeout=10 192.168.29.13 /bin/sh -c 'mkdir -p $HOME/.ansible/tmp/ansible-tmp-1436969031.23-114682339176496 && echo $HOME/.ansible/tmp/ansible-tmp-1436969031.23-114682339176496'
fatal: [192.168.29.13] => SSH Error: Permission denied (publickey,password,keyboard-interactive).
while connecting to 192.168.29.13:22
我无法全部理解,但似乎在最后一步,它试图创建一个新目录:$HOME/.ansible/tmp/ansible-tmp-1436969031.23-114682339176496
所以我检查了 tmp 目录的权限,并将其设置为:rwxrwxrwx
我想这次应该不会有权限问题,所以我又运行了palybook,却出现了类似下面的错误:
<192.168.29.13> ESTABLISH CONNECTION FOR USER: root
<192.168.29.13> REMOTE_MODULE setup
<192.168.29.13> EXEC ssh -C -tt -vvv -o ControlMaster=auto -o ControlPersist=60s -o ControlPath="/home/fni/.ansible/cp/ansible-ssh-%h-%p-%r" -o StrictHostKeyChecking=no -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=root -o ConnectTimeout=10 192.168.29.13 /bin/sh -c 'mkdir -p $HOME/.ansible/tmp/ansible-tmp-1436969284.93-135829741473588 && echo $HOME/.ansible/tmp/ansible-tmp-1436969284.93-135829741473588'
fatal: [192.168.29.13] => SSH Error: Permission denied (publickey,password,keyboard-interactive).
while connecting to 192.168.29.13:22
对于 ssh 密钥,我已按照本文中的步骤进行操作,因此它应该不会再询问密码了:
不知道有没有人遇到同样的问题,如何解决?
您的 public 密钥验证似乎没有正常工作。检查几件事:
- 在您 运行 ansible 的源系统上,确保私钥 (
~/.ssh/id_rsa
) 存在并且具有权限 400 (r--------)
- 确保正确设置了远程系统上的 public 密钥 - 对于本例中的 root 用户,/root/.ssh/authorized_keys 应该存在并具有 600 权限。还要确保/root/.ssh 有权限 700.
- 确保在远程系统上允许 root 登录,或(推荐)使用其他帐户登录。
经过2天的挣扎,我终于找到了原因,似乎我的ping请求通过了,但是剧本命令却不能,所以我做了“-vvvv”并并排比较结果,找到了用户Id 前面应该有一些东西:myproject\my_id,然后它起作用了。
我正在学习使用 Ansible 安装 Tomcat,我已经安装了 Ansible,创建并复制了 ssh 密钥,写了一个剧本,但是当我尝试 运行 这个剧本时,它给了我以下错误:
<192.168.29.13> ESTABLISH CONNECTION FOR USER: root
<192.168.29.13> REMOTE_MODULE setup
<192.168.29.13> EXEC ssh -C -tt -vvv -o ControlMaster=auto -o ControlPersist=60s -o ControlPath="/home/fni/.ansible/cp/ansible-ssh-%h-%p-%r" -o StrictHostKeyChecking=no -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=root -o ConnectTimeout=10 192.168.29.13 /bin/sh -c 'mkdir -p $HOME/.ansible/tmp/ansible-tmp-1436969031.23-114682339176496 && echo $HOME/.ansible/tmp/ansible-tmp-1436969031.23-114682339176496'
fatal: [192.168.29.13] => SSH Error: Permission denied (publickey,password,keyboard-interactive).
while connecting to 192.168.29.13:22
我无法全部理解,但似乎在最后一步,它试图创建一个新目录:$HOME/.ansible/tmp/ansible-tmp-1436969031.23-114682339176496
所以我检查了 tmp 目录的权限,并将其设置为:rwxrwxrwx
我想这次应该不会有权限问题,所以我又运行了palybook,却出现了类似下面的错误:
<192.168.29.13> ESTABLISH CONNECTION FOR USER: root
<192.168.29.13> REMOTE_MODULE setup
<192.168.29.13> EXEC ssh -C -tt -vvv -o ControlMaster=auto -o ControlPersist=60s -o ControlPath="/home/fni/.ansible/cp/ansible-ssh-%h-%p-%r" -o StrictHostKeyChecking=no -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=root -o ConnectTimeout=10 192.168.29.13 /bin/sh -c 'mkdir -p $HOME/.ansible/tmp/ansible-tmp-1436969284.93-135829741473588 && echo $HOME/.ansible/tmp/ansible-tmp-1436969284.93-135829741473588'
fatal: [192.168.29.13] => SSH Error: Permission denied (publickey,password,keyboard-interactive).
while connecting to 192.168.29.13:22
对于 ssh 密钥,我已按照本文中的步骤进行操作,因此它应该不会再询问密码了:
不知道有没有人遇到同样的问题,如何解决?
您的 public 密钥验证似乎没有正常工作。检查几件事:
- 在您 运行 ansible 的源系统上,确保私钥 (
~/.ssh/id_rsa
) 存在并且具有权限 400 (r--------) - 确保正确设置了远程系统上的 public 密钥 - 对于本例中的 root 用户,/root/.ssh/authorized_keys 应该存在并具有 600 权限。还要确保/root/.ssh 有权限 700.
- 确保在远程系统上允许 root 登录,或(推荐)使用其他帐户登录。
经过2天的挣扎,我终于找到了原因,似乎我的ping请求通过了,但是剧本命令却不能,所以我做了“-vvvv”并并排比较结果,找到了用户Id 前面应该有一些东西:myproject\my_id,然后它起作用了。