ssh的原理

什么是ssh

SSH是一种网络协议,用于计算机之间的加密登录。
目前已经成为Linux系统的标准配置
大部连接远程主机都是用 ssh的

用法

ssh user@host
-p 可以指定端口

过程

口令登录

  1. 远程主机收到用户登录请求
  2. 主机把自己的公钥下发下来
  3. 用户用这个公钥把密码加密传给远程主机
  4. 远程主机用自己的私钥解密码,验证对不对

公钥登录

能用公钥登录之前要用户把自己的公钥放远程主机上

  1. 远程主机收到用户登录请求,发出一段随机字符给用户
  2. 用户用自己的私钥加密随机字符,再发给远程主机
  3. 远程主机用事先储存的公钥进行解密,如果成功,就证明用户是可信的

可能疑惑

  • 公钥与私钥对是非对称加密中的概念,有这样的性质,用公钥加密的数据只能用私钥解开,用私钥加密的数据只能用公钥解开。程序中可以用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