Linux 集群 SCP & SSH 命令
2021/11/4 7:11:55
本文主要是介绍Linux 集群 SCP & SSH 命令,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
scp (集群之间传输文件)
集群模式下,使用 scp 命令各节点之间拷贝文件
命令格式:
# scp file 远程用户名@远程服务器IP(或主机名):~/
冒号和目录之间不能有空格
拷贝目录,需要加 -r 选项
使用 root 用户
# scp /etc/profile root@node-01:/etc # 标准格式 # scp -r /usr/jdk1.8 node-02:/usr/java # 1)如果远程用户名不写则为当前root用户,2)拷贝目录需要加 -r # scp hello.log node-02:`pwd` # `pwd`表示执行pwd命令 # scp hello.log node-02:$PWD # $PWD 表示当前目录
ssh (集群之间执行 shell 命令)
-
远程向其他主机发送命令
# ssh node-02 ls
-
远程切换到其他主机
# ssh node-03
每次传输和切换都要求输入密码
配置 ssh 免密登录
ssh 免密登录机制
-
首先,在主机 A 创建一对公钥、私钥
公钥文件:~/.ssh/id_rsa.pub 私钥文件:~/.ssh/id_rsa
-
然后,将公钥添加到主机 B 的公钥文件中,自己保留好私钥
公钥文件:~/.ssh/authorized_keys
-
最后,当主机 A 通过 ssh 登录 主机 B 时,ssh 程序会发送私钥去和主机 B 上的公钥做匹配,如果匹配成功 主机 A 就可以登录主机 B 了
ssh 免密登录操作
-
node-01 生成一对密钥(公钥和私钥)
生成密钥文件时,会有提示输入加密信息,都按回车键即可
[root@node-01 ~]# ssh-keygen -t rsa [root@node-01 ~]# cd ~/.ssh/
-
将 node-01 的公钥追加到 node-01、node-02、node-03、node-04 的授权文件 authorized_keys 中
[root@node-01 ~]# ssh-copy-id node-01 [root@node-01 ~]# ssh-copy-id node-02 [root@node-01 ~]# ssh-copy-id node-03 [root@node-01 ~]# ssh-copy-id node-04
-
验证免密登录
因为免密登录是单向的,所以需要分别设置免密登录,现在 node-01 可以免密登录 node-01、node-02、node-03、node-04
[root@node-01 ~]# ssh node-01 [root@node-01 ~]# ssh node-02 [root@node-01 ~]# ssh node-03 [root@node-01 ~]# ssh node-04
ssh 免密登录过程
-
node-01(Client) 向 node-02(Server) 发送连接请求时,附带主机名、ip 地址等信息
-
node-02 收到请求后,去授权文件(authorized)里查找 node-01 的公钥,找到之后随机生成一个字符串用公钥加密发送给 node-01
-
node-01 接收到 node-02 发送的密文后,用私钥解密并把解密结果返回给 node-02
-
node-02 拿到解密结果之后,与之前生成的字符串进行比较,如果相同则允许 node-01 免密登录
Hadoop 集群配置免密 SSH 登录
Hadoop 集群包含 1 个主节点和 3 个从节点,需要实现各节点之间的免密码登录
Hadoop集群环境
节点名称 | 节点IP |
---|---|
node-01 | 192.168.229.21 |
node-02 | 192.168.229.22 |
node-03 | 192.168.229.23 |
node-04 | 192.168.229.24 |
免密登录原理
每台主机authorized_keys
文件里面包含的主机(ssh密钥),该主机都能无密码登录,所以只要每台主机的authorized_keys
文件里面都放入其他主机(需要无密码登录的主机)的 ssh 密钥即可
实现步骤
1、每个节点生成 ssh 密钥
[root@node-01 ~]# ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Created directory '/root/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. ..................... [root@node-01 .ssh]# ls id_rsa id_rsa.pub [root@node-02 ~]# ssh-keygen -t rsa [root@node-03 ~]# ssh-keygen -t rsa [root@node-04 ~]# ssh-keygen -t rsa
执行命令后会在 ~ 目录下生成 .ssh 文件夹,里面包含 id_rsa(私钥) 和 id_rsa.pub(公钥) 两个文件
2、在主节点上将公钥拷到一个授权文件 authorized_keys 中
[root@node-01 ~]# cd .ssh [root@node-01 .ssh]# ls id_rsa id_rsa.pub [root@node-01 .ssh]# cp id_rsa.pub authorized_keys [root@node-01 .ssh]# ls authorized_keys id_rsa id_rsa.pub
3、将 authorized_keys 文件拷到下一个节点,并将该节点的 ssh 密钥 id_rsa.pub 加入该文件中
#在 node-01 上使用 scp 命令实现远程文件拷贝 [root@node-01 .ssh]# scp authorized_keys root@node-02:/root/.ssh/ The authenticity of host 'node-02 (192.168.229.22)' can't be established. ECDSA key fingerprint is SHA256:MyB1zs0E3J/fm8pC0AN8ycsgEIBNHtUqd9xS0WAyv3s. ECDSA key fingerprint is MD5:88:48:3a:ba:3e:14:a7:d7:86:f6:51:74:00:10:f9:00. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'node-02,192.168.229.22' (ECDSA) to the list of known hosts. root@node-02's password: authorized_keys 100% 395 306.2KB/s 00:00 # 登录 node-02 主机 [root@node-02 ~]# cd .ssh/ [root@node-02 .ssh]# ls authorized_keys id_rsa id_rsa.pub # 使用 cat 追加方式将 id_rsa.pub 文件内容添加到 authorized_keys 中 [root@node-02 .ssh]# cat id_rsa.pub >> authorized_keys
4、 重复第 3 步的操作,依次将 node-03、node-04 节点的 ssh 密钥加入到 authorized_keys 文件中,并将 node-04 节点生成的authorized_keys 文件拷贝到其他三个节点(node-01、node-02、node-03)即可
#登录 node-03 主机,将 ssh 密钥加入 authorized_keys 文件中 [root@node-03 .ssh]# cat id_rsa.pub >> authorized_keys [root@node-03 .ssh]# scp authorized_keys root@node-04:/root/.ssh/ #登录 node-04 主机,将 ssh 密钥加入 authorized_keys 文件中 [root@node-04 .ssh]# cat id_rsa.pub >> authorized_keys #将最后生成的 authorized_keys 文件分别拷贝到 node-01、node-02 和 node-03 中 [root@node-04 .ssh]# scp authorized_keys root@node-01:/root/.ssh/ [root@node-04 .ssh]# scp authorized_keys root@node-02:/root/.ssh/ [root@node-04 .ssh]# scp authorized_keys root@node-03:/root/.ssh/
5、验证免密登录
使用 ssh 用户名@节点名或 ssh ip 地址命令验证免密码登录
[root@node-01 .ssh]# ssh root@node-02 [root@node-02 .ssh]# ssh root@node-01 [root@node-03 .ssh]# ssh root@node-04 [root@node-04 .ssh]# ssh root@node-03
这篇关于Linux 集群 SCP & SSH 命令的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-18git仓库有更新,jenkins 自动触发拉代码怎么配置的?-icode9专业技术文章分享
- 2024-12-18Jenkins webhook 方式怎么配置指定的分支?-icode9专业技术文章分享
- 2024-12-13Linux C++项目实战入门教程
- 2024-12-13Linux C++编程项目实战入门教程
- 2024-12-11Linux部署Scrapy教程:新手入门指南
- 2024-12-11怎么将在本地创建的 Maven 仓库迁移到 Linux 服务器上?-icode9专业技术文章分享
- 2024-12-10Linux常用命令
- 2024-12-06谁看谁服! Linux 创始人对于进程和线程的理解是…
- 2024-12-04操作系统教程:新手入门及初级技巧详解
- 2024-12-04操作系统入门:新手必学指南