ssh的原理
什么是ssh
SSH是一种网络协议,用于计算机之间的加密登录。
目前已经成为Linux系统的标准配置
大部连接远程主机都是用 ssh的
用法
ssh user@host
-p
可以指定端口
过程
口令登录
- 远程主机收到用户登录请求
- 主机把自己的公钥下发下来
- 用户用这个公钥把密码加密传给远程主机
- 远程主机用自己的私钥解密码,验证对不对
公钥登录
能用公钥登录之前要用户把自己的公钥放远程主机上
- 远程主机收到用户登录请求,发出一段随机字符给用户
- 用户用自己的私钥加密随机字符,再发给远程主机
- 远程主机用事先储存的公钥进行解密,如果成功,就证明用户是可信的
可能疑惑
- 公钥与私钥对是非对称加密中的概念,有这样的性质,用公钥加密的数据只能用私钥解开,用私钥加密的数据只能用公钥解开。程序中可以用
ssh-keygen
生成。 - 口令登录下发的公钥及事先储存用户的公钥都在
/etc/ssh/sshd_config
中配置的。 - 主机只会用一对公钥私钥对,但可以储存多个用户的公钥(一般在
~/.ssh/authorized_keys
中)。 - 在公钥登录中,可能会对所有的用户公钥,都试一次对加密随机字符解解密。
ubuntu 配置公钥登录实践
拷贝本的pub文件到远程机器的~/.ssh/authorized_keys
文件中。
参考
http://www.ruanyifeng.com/blog/2011/12/ssh_remote_login.html
https://my.oschina.net/realfighter/blog/388486
http://www.jianshu.com/p/33461b619d53
http://www.cnblogs.com/Finley/p/6413214.html
ssh的原理
https://blog.fengcl.com/2017/05/27/ssh-analysis/