SSH 远程登录以及免密登录

摘要:
为了支持无缝工作,在安装和配置ssh之后,它可以是集群中机器的hdfs用户和yarn用户的无密码登录。

一、SSH远程登录的原理(基于口令)
1、客户端向服务器发送远程请求
如bigdata3登录到bigdata4:
这里写图片描述
2、服务器接收到请求后,将自己的主机的公钥发送给客户端,公钥用于加密

3、客户端将主机发送来的公钥通过hash算法得出主机公钥的公钥指纹,核对公钥指纹是否正确,以确认当前请求连接的的是我们想要登录的主机。
在bigdata4上查看公钥:ssh-keygen -lf /etc/ssh/ssh_host_ecdsa_key.pub
(我的主机用的是ssh的ECC 算法,通过ssh-keygen -t ecdsa生成密钥对。)
bigdata4上的公钥和bigdata3请求时SHA256是一样的。
这里写图片描述
4、核对过公钥后,人机交互界面输入yes,客户端会将服务端的公钥保存在$HOME/.ssh/know_hosts文件中,可通过 cat ~/.ssh/know_hosts文件中查看保存在客户端的公钥。
这里写图片描述
5、客户端用服务端的公钥将密码进行加密并发送给服务端

6、服务端接收到用自己公钥加密的客户端的密码,用在/etc/ssh下对应的私钥进行解密然后对比密码并返回登录结果,私钥用来解密。

二、ssh的免密码登录(基于密钥)

  Hadoop控制脚本(并非守护进程)依赖SSH来执行针对整个集群的操作。为了支持无缝式工作,安装配置好ssh之后,可以是集群内机器的hdfs用户和yarn用户免密码登录。实现的最简单的方法是创建一个公钥/私钥对,存放到NFS中,让整个集群共享该密钥对。如果home目录并没有通过NFS共享,则需要利用ssh-copy-id等方法共享公钥。
注意:免密登录也不是万能的。免密登录时值从一台主机A的用户userA,使用userB用户(B主机的一个用户)登录到主机B。存在着严格的对应关系:比如只能用bigdata1的root使用bigdata2的root用户登录到主机bigdata2:root@bigdata1 ====>root@bigdata2。
实现步骤:
1、在客户端生成一对密钥(公钥/私钥)
基于空口令生成一个新的ssh密钥,以实现无密码登录:

ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa

参数说明:
-t 加密算法类型,这里是使用rsa算法
-P 指定私钥的密码,不需要可以不指定
-f 指定生成秘钥对保持的位置
这里写图片描述
2、将客户端公钥发送个服务端(其他客户端),使用ssh-copy-id

ssh-copy-id root@bigdata2

这里写图片描述
注:经过ssh-copy-id后接收公钥的服务端会把公钥追加到服务端对应用户的$HOME/.ssh/authorized_keys文件中
这里写图片描述
3、客户端请求(带有自己的用户名和主机名)

4、服务端根据客户端的用户名和主机名查找对应的公钥,将一个随机的字符串用该公钥加密后发送给客户端

5、客户端用自己的私钥进行解密收到的字符串,并将解密后的字符串发送给服务端

6、服务端对比发送出去的和接收到的字符串是否相同,返回登录结果
测试:登录成功
这里写图片描述

三、远程拷贝命令 scp
  scp工具,基于ssh远程安全登录的,可以将主机A上的文件或目录拷贝给主机B并且改名字,也可以将主机B上的文件或目录下载到主机A中,同时也支持修改文件名。

  1. 远程拷贝文件
    scp 本机文件 user@host:路径/
    注:将bigdata1上的/etc/profile文件拷贝到bigdata2的根目录下
    scp /etc/profile root@bigdata2:/
    注:将bigdata1上的/etc/profile文件拷贝到bigdata2的根目录下,并改名为profile.txt
    scp /etc/profile root@bigdata2:/profile.txt
  2. 远程拷贝目录
    scp -r 本机目录 user@host:路径/
    注:将bigdata1上的/bin目录拷贝到bigdata2的根目录下
    scp -r /bin root@bigdata1:/home/ (-r 表示递归)
  3. 下载文件到本地
    scp user@host:文件名 本地目录
    注:将bigdata2上的/profile下载到本地并改名为profile.txt
    scp root@bigdata2:/profile ./profile.txt
  4. 下载目录到本地
    scp -r user@host:文件名 本地目录
    注:将bigdata2上的/bin下载到本地并改名为bin.bak
    scp -r root@bigdata2:/home/bin ./bin.bak

免责声明:文章转载自《SSH 远程登录以及免密登录》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇H265与ffmpeg改进开发【转】Golang- import 导入包的几种方式:点,别名与下划线下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Java使用SSH远程访问Windows并执行命令

转载于:http://blog.csdn.net/carolzhang8406/article/details/6760430   https://blog.csdn.net/angel_xiaa/article/details/52355513 有关freeSSHd的用法写的很清楚 windows由于没有默认的ssh server,因此在允许ssh之前需...

Metasploit快速入门(二)

Metasploit快速入门(二) 参考: https://mp.weixin.qq.com/s?__biz=MjM5MTYxNjQxOA==&mid=2652850556&idx=1&sn=bbfae36b3cbb012fc498ab3aa20501f3&chksm=bd5935b18a2ebca785209112971d...

配置github SSH公钥登录

git的安装见https://www.cnblogs.com/liliyang/p/9829931.html 配置git使用ssh密钥 git支持https和git两种传输协议,github分享链接时会有两种协议可选:  若git使用https协议,每次pull, push均提示要输入密码,使用git协议,然后使用ssh密钥对认证,即可实现免密   配...

用SecureCRT、Xshell等终端软件SSH连接Linux缓慢 解决方法

在使用SecureCRT连接Linux时,出现窗口显示已连接,但命令行迟迟不出现的情况。让人十分恼火,尤其在时间紧迫的时候特么的想砸东西。原谅我这个急性子吧 问题原因: 其实问题就出在DNS解析IP上 解决办法: 1.备份一下配置文件:cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak 2.修改配置文件: vi...

CentOS搭建Git服务器及权限管理

https://www.cnblogs.com/fly_dragon/p/8718614.html 声明:本教程,仅作为配置的记录,细节不展开,需要您有一点linux的命令基础,仅作为配置参考。 1. 系统环境 系统: Linux:CentOS 7.2 64位 由于CentOS已经内置了OpenSSH,如果您的系统没有,请自行安装。 查看ssh版本 $s...

七、大数据Hadoop的安装与配置、HDFS

1.安装Hadoop 单机模式安装Hadoop 安装JAVA环境 设置环境变量,启动运行   1.1 环境准备   1)配置主机名为nn01,ip为192.168.1.21,配置yum源(系统源) 备注:由于在之前的案例中这些都已经做过,这里不再重复.   2)安装java环境 nn01 ~]# yum -y install java-1.8.0-open...