在TCP/IP协议的应用层中,我们可能知道有FTP和Telnet可以用来传输数据,但它们是明文传输、不具备安全性的。而SSH是加密传输,更加可靠,也是非常常用的登录服务器的方法。
一、 SSH免密工作原理
关于SSH的更多工作原理,推荐阅读图解SSH原理
二、 配置
主要思路就是生成客户端的公钥,将这个公钥加入服务端的授权列表中
2.1 生成密钥对
使用命令ssh-keygen
,提示输入时直接按下回车,最后成功生成密钥
密钥对默认保存在用户文件夹的.ssh
文件夹中,其中id_rsa是私钥
,id_rsa.pub
是公钥
2.2 将公钥传输至服务器的授权列表
在建立ssh连接的时候,服务端会根据发来的公钥检查授权列表,若有则无需密码登录
使用命令ssh-copy-id
,将得到的rsa.pub
发送到服务器的授权列表中去
再次连接,验证是否免密
三、 ssh/scp/sftp
在设置好免密登录ssh之后,我发现我的scp也一样免密了,很自然想到这两者之间关系肯定不远。
打开Windows/System32/OpenSSH,果不其然看到三个主要的exe文件
- ssh.exe
- sftp.exe
- scp.exe
三者都是OpenSSH下的工具,这样使用一套认证也说得过去了。为了了解更多信息,我去网上查找了一下,在这里挑重点简要说明一下。
- SSH: Secure Shell
- SCP: Secure Copy
- SFTP: Secure File Transfer Protocol
三者都有一个Secure,意味着所有信息都是加密传输、确保安全的。SSH主要用来传输命令;SCP和SFTP主要用来远程文件。使用一番不难发现,SCP相对SFTP功能和语法都相对简单。传输方面,最大的区别就是SFTP可以断点续传,而SCP不能;最大的共同点都是和SSH用的一套安全系统,安全性都是相同的。