输入ssh 检查是否已经安装好了
ssh其实是一种安全的连接协议,在LINUX下被广泛使用,像一些主流的客户端,比如CRT、Xshell、Xmanager、MobaXterm都是使用ssh协议,在宿主机上通过这些软件ssh到虚拟机的LINUX上。
首先要满足一点:宿主机客户端软件下和虚拟机上的LINUX必须安装和接受ssh,才能达到协议对等,才能连接。
连接IBM、AIX一般用Telnet。
用户对等性:ssh在连接之前他会判断你发起这个命令的用户是谁,你用哪个用户发起的链接,他就会默认你要去连接对方机器对等的用户,root对等的root,oracle对等的是oracle,前提是必须对方得有这个对等用户。
连接方式:
ssh + IP
ssh + 主机名(对方的/etc/hosts中设置的)
48 ssh协议自选用户登录方式
让ssh具备用户自主选择权:
ssh oracle@192.168.100.21 //指定oracle用户去连接192.168.100.21
49 SCP命令
SCP ---->SSH CP(使用ssh协议进行文件和目录复制)
从本机复制到远程的机器上
命令示范:
scp 3.txt root@192.168.100.21:/root
//scp -r test root@192.168.100.21:/root 复制级联目录test
scp 3.txt root@oracle21c:/root
scp 代表命令头
3.txt 代表我要传输的文件
root 代表对方接收的用户
@192.168.100.21或@oracle21c 代表远程主机
:/root 代表对方机器接收文件或目录的位置“:”必须写别丢了
但是这里需要注意一点,对方接收的用户和对方接收文件或目录的位置(接收目录),必须要保证权限是没有问题的。接收用户必须对接收目录要有相关的读写权限。
SCP底层机制是:本地服务器先将文件发送到对方机器的内存中(权限是正确的),然后再由对方接收用户写入到接收目录中。所以文件的所属用户与所属组,要根据接收用户的情况发生改变。文件的相关权限也要根据远程服务器接收用户的设置进行改变。
50 LINUX双机互信
互信说白了就是免密登录或者是免密传输
为什么需要免密传输文件:
有的时候在一个集群中,一个集群可能是由多台机器组成的,机器之间可能需要有些文件的传输,尤其是像Hadoop集群,Oracle的RAC集群,MySQL集群,有的时候我们在配置集群的时候要让这些节点之间去进行一些免密传输,这里主要以Oracle的RAC去举例子,比Hadoop和MySQL更具代表性。Oracle的RAC集群其实是在一个节点安装完成的,安装某个软件,比如在1节点上进行安装grid软件过程中,1节点的相关的grid软件文件将被传输到2节点上,在1节点安装Oracle DB数据库软件的时候,Oracle DB这个软件也要被从1节点复制到2节点上。
//也就是说,我们在安装Oracle RAC时,不用每个节点都上传Oracle安装包,我们在一个节点上传安装包,进行安装这个动作,另外一个节点上,比如2节点,就会把1节点上相关的文件自动复制过去,让2节点也有,就不用两个节点都上传安装包了,这个时候几万甚至几十万的文件进行传输,所以我们要实现两个节点的免密或者叫双节点互信。
示例:(先是让192.168.100.21节点信任192.168.100.30节点)
1 首先使用cat /etc/hosts这个命令在两个机器上查看一下host文件是否已经写好。
我们这里用mysql(192.168.100.30)和oracle21c(192.168.100.21)这两台机器为例:
192.168.100.30 mysql
192.168.100.21 oracle21c
2 我们在mysql这台机器上生成密钥
//密钥:给30这个机器配一把钥匙或者说配上信任卡,但这把钥匙
不是自己拿着,是要交给21进行保管,30连21时,21会去看我有30的信任卡,说明30是我21信任的机器,就可以连上来了
[root@mysql ~] # ssh-keygen -t rsa
你用哪个用户生成了密钥,那么密钥就在你生成密钥用户的home目录下。
3 查询密钥
ls -al /root/.ssh //在30上执行,可以看到密钥id_rsa.pub
4 发送密钥
cd /root
scp -r .ssh root@oracle21c:/root(这里建议使用主机名)
例子
scp -r .ssh oracle@oracle21c:/home/oracle(这里建议使用主机名)
//互信这个操作,实际上以用户为单位, 只能用户和用户之间互信
5 合并密钥文件(要在oracle21c上做)
//需要注意的是如果你的主机名不是oracle21c,以你的真实环境为准
cd /root/.ssh
cat id_rsa.pub >> authorized_keys
6 如果实现双机互相信任的话,那么就把oracle21c上的authorized_keys,再传回到mysql这台机器上
scp authorized_keys root@mysql:/root/.ssh即可完成双机互信
authorized_keys文件的存在说明该节点有他信任的对象,并且他也信任他自己。
//没有这个文件机器自己也不信任自己。
51 LINUX下多机互信(三台)
撤销互信:rm -rf /root/.ssh/ // 21机器和30机器root下执行
示例:(30,21,80)
1 vi /etc/hosts添加三台机器IP和HOSTNAME
scp /etc/hosts root@oracle21c:/etc/hosts
scp /etc/hosts root@mysql8:/etc/hosts //简便方法,在30上执行
2 ssh-keygen -t rsa
3 ls -al /root/.ssh
4 scp -r /root/.ssh root@oracle21c:/root/.ssh
scp -r /root/.ssh root@mysql8:/root/.ssh
5 cat id_rsa.pub >> authorized_keys
//在21和80上执行,在.ssh下操作
6 scp /root/.ssh/authorized_keys root@mysql:/root/.ssh/authorized_keys
// 21或80上执行发给30,即可完成三机互信
总结:30生成密钥发给21和80,这两台机器把密钥添加到受信任的authorized_keys文件下,就相当于21和80都信任30了,并且21和80也互相信任了