LINUX-免密登陆配置(解决集群模式下各节点之间如何方便地拷贝文件)
集群模式下,各节点之间如何方便的拷贝文件?
命令格式:
scp file 远程用户名@远程服务器IP:~/ (注意:冒号和目录之间不能有空格)
如果拷贝目录,需要加-r 选项。
使用root用户
eg: scp /etc/profile [email protected]:/etc
eg: scp -r /usr/jdk1.8 node2:/usr/java
eg:scp hello.log node2:`pwd`
eg:scp hello.log node2:$PWD
注:使用`pwd`或者$PWD 默认到当前目录。
~:到当前用户的宿主目录
scp /etc/services node2:/root/service.hard
可以通过这种方式修改拷贝的文件名。
切换到其他节点
ssh node2
免密登录
上诉scp,ssh命令每次执行都需要输入对应服务器的密码,因此配置免密登陆可以极大节省操作步骤
假如有AB两台机器,需要配置A机免密登陆到B机
step1:A机器上生成一对钥匙,公钥和私钥
A机器当前用户的宿主目录下的.ssh目录多了两个文件
step2:将公钥拷贝给要免密码登录的机器B
注意:主机名和ip都可以(确保配置了主机名 ip的映射)
还需要输入密码
拷贝完成之后,会在要免密登录的机器上生成授权密码文件
注意:免密码登录是单向的,以上是配置了A->B免密登陆,假如要使得B->A免密登陆,按照上面步骤反向配置即可
ssh免密登录原理:
1,node1 使用 ssh-****** –t rsa 生成公钥和私钥
2,ssh-copy-id [email protected] 将公钥拷贝到node2上,实际上是把公钥内容追加到 authorized_keys文件中。
请求时:
1,node1向node2发送连接请求时,附带主机,ip地址等信息
2,node2收到请求后,去授权文件里查找node1的公钥,找到之后,随机生成一个字符串,并用公钥加密,并发送给node1
3,node1接收到密文之后,用私钥解密,并把解密结果返回给node2
4,node2拿到解密结果之后,与之前的字符串进行比较,如果相同,则可以登录成功。