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

 

原文地址:https://www.cnblogs.com/ccl971123/p/15504799.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


背景:我已经有一个ssh公钥和私钥了,绑定的是公司的码云但是绑定github是不允许的所以我需要在生成一个公钥和私钥第一步执行下面的命令, 至于如果生成ssh公钥点击这里ssh-keygen-trsa-C'your_email@example.com'-f~/.ssh/id_rsa_github然后一路回车 这里注意id_srs_g
在服务器程序的部署运维过程中,我们经常需要将文件从一个服务器拷贝到另一个服务器中。可以使用ftp,可以使用samba服务,这里我们介绍scp命令进行文件的拷贝和传输。scp是securecopy的缩写,scp是linux系统下基于ssh登陆进行安全的远程文件拷贝命令。scp是加
#!/bin/bash#创建一个以.sc结尾的文件,把要操作的主机按顺序填写进去,多个IP另起一行顶格填写例如:#192.168.0.1#192.168.0.2#确保当前操作脚本的主机,已经可以免密到被操作主机,如未完成请自行解决。do_command(){hosts=`sed-n'/^[^#]/p'*.sc`forhost
打开终端安装openssh-server软件包:sudoaptupdatesudoaptinstallopenssh-server安装完成后,SSH服务默认自动启动,你可以通过以下命令校验服务运行状态:sudosystemctlstatusssh如果防火墙开启,则需要让防火墙允许ssh通过sudoufwallowssh注意事项VMware虚拟
环境centos7.9,.NET5一、Jenkins搭建1)下载Jenkins的war包在\home目录建一个jenkins目录放jenkins的包#进入\home目录cd\home#创建jenkins目录mkdirjenkins在jenkins目录下载war包#进入jenkin目录cd\home\jenkins#下载jenkins的war包wgethttp://mirrors.jenkin
dropbear下载地址:https://matt.ucc.asn.au/dropbeareleases/dropbear-2020.81.tar.bz2软件版本号说明opensuse 15.3 ssh8 dropbear2020.81     安装编译器和依赖:zypperinstallzlib-develgcc配置安装目录:./configure--prefix=/
1.前言前面基本上已经都讲完了MHA的原理部分,这小结主要是动手实操一下MHA2.前提准备1.首先下载MHA软件包(1)#下载mha软件mha官网:https://code.google.com/archive/p/mysql-master-ha/github下载地址:https://github.com/yoshinorim/mha4mysql-manager
前期准备确定服务器可以上网apt源配置完毕安装ssh使用apt安装openssh服务。sudoapt-getinstallopenssh-server启动sshroot@cka01:~#sudo/etc/init.d/sshstart#确定22端口存在并存活root@cka01:~#ss-tnl|grep22LISTEN01280.0.0
1.首先你需要在github上或者gitlab上建立了自己的账户,项目组已经将你加入了group。2.打开gitbash,输入命令ls-al~/.ssh如果显示如下图:则表示生成过key,可以去执行第4个步骤。否则的话执行第三个步骤生成key  3.这个时候输入命令ssh-keygen-trsa-C"min~~~~"  这
简述Linux如何远程拷贝,限速和断点续传scp命令 –远程拷贝文件scp拷贝本地文件filename到远程机器192.168.188.188服务器的/datamp目录下scp-P61204-l40000filenameusername@192.168.188.188:/datamp/ -PportSpecifiestheporttoconnecttoontherem
最近两天发现push代码到GitHub上时,发现必须得用SSH或者Token的方式。直接上干货1.SSH方式 1.1在桌面上GitBashHere 1.2检查是否已存在SSH   如果已存在,则直接进入.ssh目录1.3不存在,则创建一个SSHkey(如果不需要设置输入密码,一直回车就好)$ssh-keygen
安装命令yuminstallopenssh-clientsLinuxscp命令用于Linux之间复制文件和目录。scp是securecopy的缩写,scp是linux系统下基于ssh登陆进行安全的远程文件拷贝命令。scp是加密的,rcp 是不加密的,scp是rcp的加强版。语法scp[-1246BCpqrv][-ccipher][-F
1.环境介绍1.本地为windows2.远程为linux2.本地安装ssh环境我这里下载了git,所以在环境变量里把/git/usr/bin加进去就可以了3.本地vscode安装远程开发插件Remote-development是一个集成插件,安装它就可以了4.生成ssh秘钥对,并将公钥放入远程机#本地机生成秘钥对$s
文章链接故障表现在使用jumperver登录AWSec2实例的时候发现ssh配合秘钥登录的时候无法登录,具体报错如下:ssh-i/path/xx.pemuser@10.0.11.190Permissiondenied(publickey,gssapi-keyex,gssapi-with-mic).问题排查过程在发现无法登录的第一时间等了AWS平台查
1.给root用户设置密码sudopasswdroot2.修改sshd配置文件sudonano/etc/ssh/sshd_config修改PermitRootLoginyes把PermitRootLoginwithout-password或者PermitRootLoginprohibit-password改为PermitRootLoginyes,注意PermitRootLoginwithout-password可能被注
手上有一台12.4的ios机器,通过SecureCrt可以ssh上去,但是每次连接的时候都会报“KeyboardInteractive”错误,skip即可,但是通过ssh客户端连接,却无法正常连接,错误提示如下:@127.0.0.1:Permissiondenied(publickey,password,keyboard-interactive) 开始以为是KeyboardInteract
1、创建私有CA并进行证书申请。1.创建CA所需要文件#生成证书索引数据库文件touch/etc/pki/CA/index.txt#指定第一个颁发证书的序列号echo01>/etc/pki/CA/serial2、生成CA私钥cd/etc/pki/CA/(umask066;opensslgenrsa-outprivate/cakey.pem2048)3、生成CA自签名证书op
克隆两台虚拟机加master三台组成一个集群 所克隆的虚拟机需要修改主机名,ip 永久修改主机名 hostnamectlset-hostnamenode1或node2 ip 方式1: 通过可视化界面直接修改 方式2: vim/etc/sysconfigetwork-scripts/ifcfg-ens33 然后重启网络:servicenetworkrestart
SSH配置文件中加密算法没有指定,默认支持所有加密算法,包括arcfour,arcfour128,arcfour256等弱加密算法。但是目前RC4是不安全算法若数据库安全性要求比较高,这个漏洞还是必须要修复的,下面记录下OracleRAC修复过程,此修复过程不影响现有系统。如有不当欢迎斧正。1、root权限用户才能
问题:通过XShell等客户端使用ssh方式通过root用户连接Ubuntu虚拟机时,出现SSH服务器拒绝了密码,请再试一次。解决:安装ssh,开启root用户登录权限。1安装ssh-serverroot@ubuntu:/etc/apt#apt-getinstallopenssh-server安装ssh-server2安装ssh-clientroot@ubuntu:/etc/apt#ap