centos7:ssh免密登陆设置及常见错误
一、免密登录设置
1、使用root用户登录,进入到目录/root/.ssh
2、执行命令:ssh-keygen -t rsa
一路回车,完成后会在目录/root/.ssh下面生成文件 id_rsa和id_rsa.pub
3、将公钥写入文件authorized_keys:cat id_rsa.pub >> authorized_keys
4、重复1、2、3,直到要免密登录的所有机器都生成了id_rsa和id_rsa.pub文件和authorized_keys
5、将其他机器的公钥拷贝到第一台机器authorized_keys文件中:
ssh-copy-id -i ~/.ssh/id_rsa.pub root@ip
6、将第一台机器的authorized_keys复制到其他机器
scp /root/.ssh/authorized_keys ip:/root/.ssh/
提示报错:Permission denied, please try again.
可能原因:
1、目录或文件没有写权限(默认不会),解决:chmod 700 .ssh chmod 644 authorized_keys
2、ssh服务需要修改下配置,解决:
修改目标服务器的/etc/ssh/sshd_config中的PermitRootLogin 为 yes ,然后重启ssh(systemctl restart sshd.service)
7、验证(第一次需密码)
ssh ip
注:上述实现了root用户之间的免密操作,如果要实现其他用户,则使用其他用户登录,进行上述操作,生成的密钥文件会在用户目录下的.ssh下。
如果已经实现了一个用户免密,要实现其他用户免密,可以将实现免密的用户下的.ssh目录下的文件拷贝到其他用户下即可。
二、常见错误
一般为了方便运维管理都会配置ssh免密登录,ssh免密登录实现也很方便。今天遇到一个完成了配置了却不能生效的问题。
遇到这个问题一般有以下几点:
- authorized_keys文件是否启用
- .ssh 和 authorized_keys 文件权限问题
检查AuthorizedKeysFile配置是否启用authorized_keys
···bash
root@pts/1 $ cat /etc/ssh/sshd_config |egrep AuthorizedKeysFile
AuthorizedKeysFile .ssh/authorized_keys
没有问题,继续检查.ssh (700) 和 authorized_keys(644) 权限
```bash
root@pts/1 $ getfacl /root/.ssh/
getfacl: Removing leading '/' from absolute path names
# file: root/.ssh/
# owner: root
# group: root
user::rwx
group::---
other::---
root@pts/1 $ getfacl /root/.ssh/authorized_keys
getfacl: Removing leading '/' from absolute path names
# file: root/.ssh/authorized_keys
# owner: root
# group: root
user::rw-
group::---
other::---
authorized_keys 权限不对,修改一下chmod 644 authorized_keys
再次尝试结果发现还是不行。但是该设置的权限都设置了。既然.ssh目录和其下文件的权限都OK了,那就检查下其父目录的权限,也就是这里的/root的权限
root@pts/1 $ getfacl /root/
getfacl: Removing leading '/' from absolute path names
# file: root/
# owner: ftpuser
# group: ftpuser
user::r-x
group::r-x
other::---
发现这里/root 的属主都发生了变化。为了不影响别的业务情况,保留这里的ftpuser权限,利用setfacl添加特殊ACL权限
root@pts/1 $ chown -R root:root /root/
root@pts/1 $ setfacl -m u:ftpuser:rwx /root/
root@pts/1 $ getfacl /root/
getfacl: Removing leading '/' from absolute path names
# file: root/
# owner: root
# group: root
user::rwx
user:ftpuser:rwx #effective:r-x
group::r-x
mask::r-x
other::r-x
附加
权限问题
- /root 775
- /root/.ssh 700
- /root/.ssh/authorized_keys 644
- 开启文件AuthorizedKeysFile .ssh/authorized_keys
三、CentOS7再ssh-copy-id时的错误
1、在几台主机搭好环境后,centos7系统,几台机器全部执行了ssh无密码操作后,由于
IP的问题而需要为某一台服务器重新配置IP,也就是换了一个IP但是主机名并没有改变,
ssh-copy-id dgb@ceph1 时就报了以下的错误
/bin/ssh-copy-id: ERROR: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
ERROR: @ WARNING: POSSIBLE DNS SPOOFING DETECTED! @
ERROR: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
ERROR: The ECDSA host key for ceph-admin has changed,
ERROR: and the key for the corresponding IP address 192.168.0.10
ERROR: is unknown. This could either mean that
ERROR: DNS SPOOFING is happening or the IP address for the host
ERROR: and its host key have changed at the same time.
ERROR: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
ERROR: @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
ERROR: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
ERROR: IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
ERROR: Someone could be eavesdropping on you right now (man-in-the-middle attack)!
ERROR: It is also possible that a host key has just been changed.
ERROR: The fingerprint for the ECDSA key sent by the remote host is
ERROR: 6e:77:fc:47:14:4c:98:46:c8:c8:49:01:a8:fe:83:ee.
ERROR: Please contact your system administrator.
ERROR: Add correct host key in /home/dgb/.ssh/known_hosts to get rid of this message.
ERROR: Offending ECDSA key in /home/dgb/.ssh/known_hosts:4
ERROR: ECDSA host key for ceph-admin has changed and you have requested strict checking.
ERROR: Host key verification failed.
解决办法其实在报错信息中已经存在了:
ERROR: Add correct host key in /home/dgb/.ssh/known_hosts to get rid of this message.
ERROR: Offending ECDSA key in /home/dgb/.ssh/known_hosts:4
查看/home/dgb/.ssh/known_hosts这个文件,里面是:
ceph-admin,192.168.0.10 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBFZgBm7r+RNOhGby8l+D57bXr/f1k055AlrlJcjlUQO9CMkNFZLGE32fcREG3EtmmrdPxlUXMX+ajzkaYbEa1rs=
ceph1,192.168.0.11 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBFZgBm7r+RNOhGby8l+D57bXr/f1k055AlrlJcjlUQO9CMkNFZLGE32fcREG3EtmmrdPxlUXMX+ajzkaYbEa1rs=
ceph2,192.168.0.12 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBFZgBm7r+RNOhGby8l+D57bXr/f1k055AlrlJcjlUQO9CMkNFZLGE32fcREG3EtmmrdPxlUXMX+ajzkaYbEa1rs=
ceph3,192.168.0.13 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBFZgBm7r+RNOhGby8l+D57bXr/f1k055AlrlJcjlUQO9CMkNFZLGE32fcREG3EtmmrdPxlUXMX+ajzkaYbEa1rs=
ceph4,192.168.0.14 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBDhXt1f/8evGZ4U7RBqV8bRi6O/ZcZvmWjPyZA6HQsFQF9M0Y2Usq3VvTW46dWaaNRMpRbwzmUYLwADV/RsXm1c=
ceph-rgw2,192.168.0.30 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBFlk04wCYYRhNqPrGlyUt7OTPhE1yU33+CWo1iTXJj7c+aU87z2saGGnTqCylQmz+yAdO7vMPGsIin5GqxODnkA=
找到以前的IP并且删除,然后再做ssh-copy-id操作即可。
centos7:ssh免密登陆设置及常见错误的更多相关文章
- linux 下的ssh免密登陆设置
一,原理 说明: A为linux服务器a B为linux服务器b 每台linux都有ssh的服务端和客户端,linux下的ssh命令就是一个客户端 我们常用ssh协议来进行登陆或者是文件的拷贝,都需要 ...
- centos7:ssh免密登陆设置
1.使用root用户登录,进入到目录/root/.ssh 2.执行命令:ssh-keygen -t rsa 一路回车,完成后会在目录/root/.ssh下面生成文件 id_rsa和id_rsa.pub ...
- CentOS7中SSH免密登陆设置
一.准备三台客户机 hadoop100 192.168.13.100(Master) hadoop101 192.168.13.101 hadoop102 192.168.13.102 二.在hado ...
- ssh免密登陆及时间设置
1.ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa // 在自己主机生成私钥和公钥 2.scp id_rsa.pub centos@s201:/home/centos ...
- SSH免密登陆配置过程和原理解析
SSH免密登陆配置过程和原理解析 SSH免密登陆配置过很多次,但是对它的认识只限于配置,对它认证的过程和基本的原理并没有什么认识,最近又看了一下,这里对学习的结果进行记录. 提纲: 1.SSH免密登陆 ...
- ssh免密登陆 2
应用场景之一:java 程序调用shell脚本,通过ssh 免密登陆数据库服务器,进行数据的抽取打包工作. 免密设置步骤: 1.客户端生成公私钥,在任意目录下执行命令ssh-keygen(一路回车默认 ...
- SSH免密登陆和设置别名
目录 SSH免密登陆 SSH别名登陆 常见问题 SSH免密登陆 本机生成SSH私钥和公钥 ssh-keygen -t rsa 这样会在当前目录生成名为id_rsa的私钥文件和名为id_rsa.pub的 ...
- SSH免密登陆原理及实现
声明:作者原创,转载注明出处. 作者:帅气陈吃苹果 一.SSH简介 SSH(Secure Shell)是一种通信加密协议,加密算法包括:RSA.DSA等. RSA:非对称加密算法,其安全性基于极其困难 ...
- ssh免密登陆:sshpass -p [passwd] ssh -p [port] root@192.168.X.X
正文: ssh免密登陆:sshpass -p [passwd] ssh -p [port] root@192.168.X.X
随机推荐
- ajax 页面无刷新
<!-- 使用原生Ajax 和 $.ajax 实现局部刷新的过程 --><!-- 封装通用XMLHttpRequest对象 --><!DOCTYPE html>&l ...
- 004_FreeRTOS创建与删除任务
(一)创建与删除任务函数 (二)上面的四个函数目前只用动态创建任务和删除任务 (三)动态创建任务 函数 xTaxkCreate() 1. 宏 configSUPPORT_DYNAMIC_ALLOCAT ...
- sql server 函数学习
sql server 创建函数 资料 https://docs.microsoft.com/zh-cn/sql/relational-databases/user-defined-functions/ ...
- CF920C Swap Adjacent Elements 贪心
我也不知道该说啥,水就是了~ code: #include <bits/stdc++.h> #define N 300004 #define setIO(s) freopen(s" ...
- Ubuntu验证查看库的安装情况
以下是ubuntu系统安装完成一些库后,验证查看各个库的安装情况. 1. CUDA8.0 yuanlibin@yuanlibin:~$ nvcc -V nvcc: NVIDIA (R) Cuda co ...
- docker 命令 记录
获取指定容器的ip docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container_nam ...
- Flutter中用ListView嵌套GridView报错异常
flutter中的ListView组件和GridView组件都是常用的布局组件,有时候ListView中需要嵌套GridView来使用,例如下图: 这种情况就需要在ListView里面再嵌套一个Gri ...
- 安装RabbitMQ管理插件失败
运行 rabbitmq-plugins.bat enable rabbitmq_management后提示失败信息 是因为erlang和RabbitMQ版本冲突导致
- jeecg中获取用户拥有的角色的数据权限
String roles1=""; String sql=""; //1.获取用户 TSUser user = ResourceUtil.getSessionU ...
- 读取yml 文件中的参数
第一种方法: yml 文件: spring: main: allow-bean-definition-overriding: true cloud: consul: host: 192.168.1.1 ...