一、ssh简介
-
SSH(Secure Shell)是一种通信加密的网络传输协议,可在不安全的网络中为网络服务提供安全的传输环境。SSH通过在网络中创建安全隧道来实现SSH客户端与服务器之间的连接。任何网络服务都可以通过SSH实现安全传输,SSH最常见的用途是远程登录系统,人们通常利用SSH来传输命令行界面和远程执行命令。
-
加密算法
加密算法包括:RSA、DSA等:
RSA:非对称加密算法,其安全性基于极其困难的大整数的分解(两个素数的乘积)
DSA:也是非对称加密算法,其安全性基于整数有限域离散对数难题 -
scp传输
scp(secure copy)是linux系统下基于ssh登录进行安全的远程文件拷贝的命令。
# 传递文件到远程 [hadoop@master]$scp local_file remote_username@remote_ip:remote_file # 传递文件夹到远程 [hadoop@master]$ scp -r local_folder remote_username@remote_ip:remote_folder # 复制远程文件到本地,只是调换下文件参数位置即可 [hadoop@master]$ scp remote_username@remote_ip:remote_file local_file
远程拷贝的命令还有 rsync, scp消耗资源少,不会提高多少系统负荷,在这一点上, rsync就远远不及它了。 rsync比 scp会快一点,但当小文件多的情况下, rsync会导致硬盘 I/O非常高,而 scp基本不影响系统正常使用。
与scp相似的命令是cp,但是cp只能本机拷贝而不能跨服务器,因此需要与ssh合作构成scp命令。
我们直接使用scp来跨机器拷贝文件,会提示输入密码:[hadoop@master hadoop]$ scp core-site.xml hadoop@slave1:/home/hadoop/hadoop/etc/hadoop/ [hadoop@master hadoop]$ hadoop@slave1's password: core-site.xml 100% 1384 45.5KB/s 00:00
原因就在于,scp是先使用ssh连接服务端机器后,再使用网络来执行远程拷贝(cp)
为避免每次scp都输入用户名、密码,可通过ssh免密登录解决。
二、ssh免密登录原理