SCP免密传输和SSH登录协议详解
在linux下开发时,经常需要登录到其他的设备上,例如虚拟机内ubuntu、树莓派等等,经常涉及到传输文件的操作,传输文件有很多中方法,如物理磁盘拷贝,基于网络的samba服务、SCP传输、ftp文件传输等等,今天我们就来聊聊出场频率最高的SCP传输。
SCP的使用
在linux环境中,当我们需要在两台机器之间传输数据时,经常会用到SCP指令,(SCP指令其实就是基于SCP(secure copy)协议实现的应用程序),SCP的使用示例:
scp a.out [email protected]:/home/donwey
从示例可以看出,上述示例为:将a.out这个文件传送给IP为192.168.1.101目标机器的/home/downey目录下,如果是第一次传输,终端会显示:
The authenticity of host '192.168.4.77 (192.168.4.77)' can't be established.ECDSA key fingerprint is 7f:d8:d6:37:4f:a7:6f:8d:a3:00:45:7f:0d:xx:xx:xx.Are you sure you want to continue connecting (yes/no)?
接着键入:
yes
然后系统会提示你输入账户和密码,注意这个密码指的是目标机器上用户的账号密码,正确输入之后传输完成。
知道怎么做,当然还需要知道为什么这么做,所以我们需要来探究scp指令背后的秘密。
预备知识
在介绍SCP协议之前,我们先得了解一下SSH协议,和计算机中的加密方式,因为SCP协议的登录过程基于SSH协议。
对称加密
对称加密,即在数据传输过程中对数据进行加密和解密的算法使用同一个密钥,这种加密算法有什么弊端呢?
当客户端需要与服务器端进行数据传输时,不管是由客户端还是由服务端产生的密钥,都得将这个密钥传给对方才能实现加解密,而在传输的过程中就可能造成密钥的泄漏。
那么有些人就要说了,那我不用网络传输秘钥,我可以使用口头传输或者u盘拷贝的方法。
是的,这样就可以保证安全,但是在大多数互联网应用中,通信双方是陌生设备,无法做到上述的方式。
非对称加密
针对对称加密带来的风险,非对称加密则解决了这个问题。
将加解密使用的密钥分为公钥和私钥,公钥可以公开,而私钥则由密钥生成者保存,客户端使用公钥进行加密,而服务端用私钥进行解密,且目前来说还没有出现能从公钥推算出私钥的的破解机制。
所以相对于对称加密而言,这种加密方式更加安全,但是这种加密方式的缺点是会占用更多的计算机资源,而且这种资源的耗费量是巨大的。
常见的加密方式
对称加密:
- <