zoukankan      html  css  js  c++  java
  • linux免密登录ssh验证配置方法及常见错误解决

    目标:从服务器A免密登录服务器B

    【配置方法】

    1.在服务器A生成密钥文件,直接使用以下命令:

    ssh-keygen

    中间遇到输入内容一路回车即可,完成后会在 ~/.ssh 目录下生成两个文件:id_rsa(私钥文件)和 id_rsa.pub(公钥文件,在服务器B要用到的)

    2.登录服务器B,编辑~/.ssh/authorized_keys文件,将服务器A里的~/.ssh/id_rsa.pub内容复制进去保存,并授予权限644。另外~/.ssh目录授权700

    vim ~/.ssh/authorized_keys
    chmod 644 ~/.ssh/authorized_keys
    chmod 700 ~/.ssh

    如果~/.ssh目录不存在,请手动创建,命令为:mkdir ~/.ssh

    或者直接用在服务器A上用ssh-copy-id命令:

    ssh-copy-id -i ~/.ssh/id_rsa.pub root@服务器B地址
    
    其中 -i 参数是指定公钥文件

    完成以上两步就可以实现了,如果遇到问题无法连接,请继续往下看:

    【常见问题】

    1.服务器B没打开公钥登录权限

    解决方法:编辑/etc/ssh/sshd_config文件,注意以下几项的值:

    PermitRootLogin yes

    PubkeyAuthentication yes

    AuthorizedKeysFile .ssh/authorized_keys

    编辑完保存,重启sshd服务(ubuntu是ssh ,centos是sshd)

    (这些值其实也是默认的,默认也是开启的,如果连不上还是需要检查下)

    2.服务器B目录和文件权限

    解决方法:检查并设置以下权限

    ~/.ssh/  700

    ~/.ssh/autorized_keys  644

    3.服务器B开启了selinux

    解决方法:使用以下命令关闭

    setenforce 0

    并且编辑配置文件(永久关闭)

    vim /etc/selinux/config

    改变里面的值

    SELINUX=disabled

    然后保存

    4.遇到问题:从A服务器可以免密访问B服务器,但是B访问A却需要输入密码

    原因:A服务器有id_rsa 和 id_rsa.pub    id_dsa 和 id_dsa.pub 2套文件。B服务器只有 id_dsa 和 id_dsa.pub

    解决: 在B服务器也生成id_rsa 和 id_rsa.pub,把B服务器的 id_rsa.pub 写入A服务器 的authorized_keys

    5.其他权限问题:

    //用户权限

    chmod 700 /home/username

    //.ssh文件夹权限

    chmod 700 ~/.ssh/

    // ~/.ssh/authorized_keys 文件权限

    chmod 600 ~/.ssh/authorized_keys
  • 相关阅读:
    sqlite
    c++primer
    c++ std find_last_of
    c语言
    boost serialization
    ssh autologin
    c/c++文件相关
    AndroidTreeView等例子
    and
    解决Gradle 依赖下载慢以及android开发释放c盘空间及android虚拟机访问网络--以及访问本机
  • 原文地址:https://www.cnblogs.com/dancesir/p/13919422.html
Copyright © 2011-2022 走看看