linux - SSH登陆未生成公钥为什么说传给了客户端?

查看:83
本文介绍了linux - SSH登陆未生成公钥为什么说传给了客户端?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

我再学习SSH登陆的时候google搜索到的各种资料基本都会说到这样一段:

在 SSH 使用密码的方式登陆整个过程是这样的:
(1)远程主机收到用户的登录请求,把自己的公钥发给用户。(2)用户使用这个公钥,将登录密码加密后,发送回来。(3)远程主机用自己的私钥,解密登录密码,如果密码正确,就同意用户登录。

这段是在描述这样的一个过程:

$ ssh foo@remote_serv
The authenticity of host 'virtural (xxx.xxx.xxx.xxx)' can't be established.
ECDSA key fingerprint is SHA256:0yMAAeWwuLywagT2CORdVWO4uHTGILtrh+0XRah6FWQ.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'virtural,xxx.xxx.xxx.xxx' (ECDSA) to the list of known hosts.
foo@virtural's password: 
Welcome to Ubuntu 16.04.1 LTS (GNU/Linux 4.4.0-38-generic x86_64)

Last login: Tue Sep 27 18:28:34 2016 from xxx.xxx.xxx.xxx
foo@@localhost:~$

注意: 本次SSH使用密码登陆的

亲测实践过程:

  • remote_serv(远程主机) foo 用户并未生成公钥和密钥,也就是 /home/foo/.ssh/目录下并未存在 id_rsa.pub和id_rsa之类的密钥文件;

  • 本地主机 bar 用户并未生成公钥和密钥,也就是/home/bar/.ssh/目录下并未存在 id_rsa.pub和id_rsa之类的密钥文件;

  • 本地主机 bar 用户运行 ssh foo@remote_serv, 输入yes加入known_hosts后再输入密码可成功登入 remote_serv


疑问: 远程主机未生成公钥和私钥,如何发送自己的公钥给本地主机用于本地主机加密登陆密码呢?

截图如下:

解决方案

……难道生成的公私钥就一定要存在于.ssh目录下吗?……
……难道OpenSSH就不能把它存在于内存中吗?……
……更何况为了保证安全,这个公私钥是动态生成的,不是固定不变的……
…….ssh文件夹只是用在使用公私钥登录的时候,而非使用其他方式登录的时候……

这篇关于linux - SSH登陆未生成公钥为什么说传给了客户端?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆