LinuxSCP和SSH命令

scp命令

cp命令,是拷贝的作用,可以实现将文件或者目录拷贝到另外一个位置。
scp命令,也是拷贝的作用,但是是远程拷贝,可以实现将文件或者目录拷贝到另外的一台机器上。

命令格式

# scp file 远程用户名@远程服务器:目标路径
# 示例: 
scp ~/data/a.log xiaoxiaoqian@qianfeng02:/home/xiaoxiaoqian/data/           # 将本机的~/data/a.log文件,拷贝到qianfeng02机器上的/home/xiaoxiaoqian/data下
scp ~/data/a.log root@qianfeng02:/root/data/    # 将本机的~/data/a.log文件,拷贝到qianfeng02机器上的/root/data下
# 上述两个拷贝的区别:
# 其实都是拷贝,区别就是使用的用户。在进行拷贝的时候,是需要你输入目标机器的指定用户的密码的。
# 例如: 
# 第一个拷贝,xiaoxiaoqian@qianfeng02,需要验证qianfeng02节点上的xiaoxiaoqian的密码。
# 第二个拷贝,root@qianfeng02,需要验证qianfeng02节点上的root的密码。

# 如果需要拷贝文件夹,添加-r
scp -r /usr/local/jdk root@qianfeng02:/usr/local/     # 将本机的/usr/local/jdk目录,拷贝到qianfeng02的/usr/local下
复制代码

小技巧

# 1. 如果远程的用户,与本机的用户名相同,可以省略目标的用户名
#    示例: 本机登录的用户是root,远程的qianfeng02的用户也是root,因此可以省略
scp ~/a.log root@qianfeng02:/root/data/     # 拷贝给qianfeng02的root用户
scp ~/a.log qianfeng02:/root/data                   # root用户省略,直接写qianfeng02即可

# 2. 如果需要拷贝到远程服务器与本机相同的路径,可以使用$PWD
#    示例:
[root@qianfeng01 local]# pwd
/usr/local/
[root@qianfeng01 local]# scp -r jdk qianfeng02:/usr/local/      # 需要远程拷贝给qianfeng02的/usr/local目录,而本机当前也在这个路径下,因此可以简写
[root@qianfeng01 local]# scp -r jdk qianfeng02:$PWD                     # 用$PWD表示当前的工作路径
复制代码

文末扫码领取大数据学习礼包!

ssh免密登录

ssh的简介

ssh: 是一个远程登录的命令,可以远程登录到指定的虚拟机。
其实,我们使用的远程连接工具,就是使用ssh实现的。

ssh在进行远程登录的时候,需要进行身份验证,输入远程登录用户的密码。
例如:
ssh root@qianfeng02 # 需要输入qianfeng02节点的root密码
ssh qianfeng02 # 当远程登录的用户名,与当前的用户名相同的时候,远程用户名可以省略
在我们后续的使用中,集群的节点之间需要频繁的进行通信,因此免密登录是必须要配置的。
如果不配置免密登录,则在很多时候集群通信的时候,需要输入密码。这就需要人工维护,成本很高,而且很麻烦。

免密登录的原理

  1. qianfeng01使用ssh-keygen -t rsa生成公钥和私钥。
  2. ssh-copy-id qianfeng02,将公钥拷贝到qianfeng02上,实际就是把公钥的内容追加到authorized_keys文件中。
  3. 请求时: qianfeng01向qianfeng02发送连接请求时,附带主机、IP地址等信息。
  4. qianfeng02收到请求后,去授权文件(authorized_keys)中查找qianfeng01的公钥,找到之后,随机生成一个字符串,并使用公钥加密,发送给qianfeng01。
  5. qianfeng01收到密文后,用私钥解密,并把解密的结果返回给qianfeng02。
  6. qianfeng02拿到解密结果之后,与之前的字符串进行比较,如果相同,则可以登录成功。

LinuxSCP和SSH命令_第1张图片

ssh-login

免密登录的实现

我们最终的目标是实现qianfeng01免密登录到qianfeng02,即在qianfeng01上远程登录qianfeng02不需要密码。
复制代码
  1. 在qianfeng01上生成一对钥匙,分为公钥和私钥

    LinuxSCP和SSH命令_第2张图片

  2. 当前用户的家目录下的.ssh目录中,会生成两个文件

  3. 将公钥拷贝给要免密登录的机器

    最终要实现的是将id_rsa.pub,即公钥中的数据,添加到目标机器的authornized_keys文件中。你可以使用scp将公钥远程拷贝到目标机器,然后添加到目标文件末尾。但是麻烦。
    可以使用更简单的方式: ssh-copy-id 
    
    1. 如果没有这个命令,可以自己安装
       [root@qianfeng01 ~]# yum install openssh-clients -y
       
    2. 将公钥拷贝到目标机器
       [root@qianfeng01 ~]# ssh-copy-id qianfeng02
       
    3. 输入密码,完成拷贝
    复制代码

  4. 拷贝完成后,会在要免密登录的机器上生成授权密码文件

  5. 免密登录是单向的

    免密登录是单向的,即qianfeng01可以免密登录qianfeng02,但是qianfeng02登录qianfeng01还需要密码。
    因此,按照上述的步骤,自己实现qianfeng01、qianfeng02、qianfeng03之间彼此免密和自身也要免密。
    

 更多大数据相关精彩内容欢迎B站搜索“千锋教育” 

【千锋教育】大数据开发全套教程,史上最全面的大数据学习视频

你可能感兴趣的:(大数据从0到1的完美落地,ssh,服务器,linux)