zoukankan      html  css  js  c++  java
  • SSH 在ssh-copy-id 之后仍需输入密码的问题

    最近在使用Ansible,基于SSH。

    远程服务器IP: 

    192.168.200.193

    以下提及的远程服务器都为该服务器。

    远程用户:

    ansible_user

    在本地服务器中,ssh-keygen生成密钥之后,将通过ssh-copi-id将生成的公钥添加到远程服务器:

    ssh-copy-id ansible_user@192.168.200.193

    然后登录到远程服务器,在/home/ansible/.ssh/authorized_keys文件中能够看到本地服务器中生成公钥。

    然后在本地服务器中使用ssh远程登录:

    ssh ansible_user@192.168.200.193

    奇怪的是,仍然需要输入密码。但在远程服务器上新建一个用户,执行上面的步骤,却能够生效。

    如果此时使用ansible执行一些操作的话还会得到如下错误:

    192.168.200.193 | UNREACHABLE! => {
        "changed": false,
        "msg": "Failed to connect to the host via ssh: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
    ",
        "unreachable": true
    }

    看样子是权限的问题。

    并且在/var/log/secure看到日志:

    Authentication refused: bad ownership or modes for file /home/ansible_user/.ssh/authorized_keys

    这时候观察ansible_user家目录的属性发现确实有点异常:

    drwx------  12    1001 ansible_user  4096 3月  20 14:11 ansible_user

    从/etc/passwd文件中看到ansible_user的信息:

    ansible_user:x:0:0::/home/ansible_user:/bin/bash

    这里跟家目录明显不符,记起之前通过root用户强行将ansible_user的uid改为了0。这也是导致家目录所属用户是UID(1001),而不是用户名的原因。

    现在将/etc/passwd中的UID 0 改为1001即可。

    当然出现该情况的还有一些其他原因,个人觉得这个是比较奇怪的原因之一。

  • 相关阅读:
    python2(跳脱字节、字符类型:字符串、boolean)
    php like模糊查询详解 '%value%'
    php mysql distinct关键字的用法
    php mysql 基础的增删改查操作
    for循环 求数组平均数和总数
    for()循环关联数组
    找出数组中的最大值及其索引
    php 2种常用定义数组的用法
    php 使用字符串函数取出数组中的图片名
    php 使用魔术变量加载文件 __DIR__
  • 原文地址:https://www.cnblogs.com/xzysaber/p/6589182.html
Copyright © 2011-2022 走看看