使用秘钥登录sshd服务器的问题

为当前最终发行版之前的所有版本提供支持
回复
rhinolt
帖子: 70
注册时间: 2017-01-03 19:08
系统: RHEL7
送出感谢: 15 次
接收感谢: 0

使用秘钥登录sshd服务器的问题

#1

帖子 rhinolt » 2019-08-03 14:16

网上搜了一通,我很迷惑,是我对秘钥的理解完全错了吗?
配置:服务器A:ubuntu server 运行sshd;客户机B\C:windowsxp,使用putty正常能通过password登录A的root账号
需求:从客户机B\C使用秘钥,不输入密码登录服务器A的root账号

迷惑:网上的教程基本上都是要在B机上putty-keygen生成私钥,然后把公钥内容复制到A机的/root/.ssh/authorized_keys,迷惑点是,倘若其他客户机C也需要通过秘钥登录A,那这个A机的/root/.ssh/authorized_keys要怎么弄?

按照我的理解,不应该是A给B提供ssh服务的吗?那么应该是:
1.A通过ssh-keygen生成公钥私钥,私钥不能复制,公钥提供给B
2.B直接使用公钥登录A(在我实验过程失败,仍然需要账号密码登录)\B使用putty-keygen将公钥转换,再去登录A(实验过程失败,putty-keygen不认ssh生成的公钥)

请老师们指点迷津,谢谢
onlylove
论坛版主
帖子: 4794
注册时间: 2007-01-14 16:23
送出感谢: 1 次
接收感谢: 137 次

Re: 使用秘钥登录sshd服务器的问题

#2

帖子 onlylove » 2019-08-03 16:09

authorized_keys的内容可以追加,一行一个密钥

公钥是解密用的,私钥是加密用的,你不要搞错这俩的用途
客户端用私钥加密信息,主动发起连接,然后服务器用客户端的公钥解密
你让a把公钥给b,然后a主动连接b么?

===
犯错要改正

私钥是负责解密的

“不要去硬记。你只要想:既然是加密,那肯定是不希望别人知道我的消息,所以只有我才能解密,所以可得出公钥负责加密,私钥负责解密;同理,既然是签名,那肯定是不希望有人冒充我发消息,只有我才能发布这个签名,所以可得出私钥负责签名,公钥负责验证。”
这些用户感谢了作者 onlylove 于这个帖子:
rhinolt (2019-08-03 21:42)
评价: 3.7%
rhinolt
帖子: 70
注册时间: 2017-01-03 19:08
系统: RHEL7
送出感谢: 15 次
接收感谢: 0

Re: 使用秘钥登录sshd服务器的问题

#3

帖子 rhinolt » 2019-08-03 21:45

那是我理解错了
一直都以为是类似SSL的流程,A给B\C发证书,B\C通过证书才能登陆A
或者说我对SSL的理解也是错的?
头像
astolia
论坛版主
帖子: 4314
注册时间: 2008-09-18 13:11
送出感谢: 1 次
接收感谢: 724 次

Re: 使用秘钥登录sshd服务器的问题

#4

帖子 astolia » 2019-08-04 23:00

onlylove 写了:
2019-08-03 16:09
公钥是解密用的,私钥是加密用的,你不要搞错这俩的用途
你才弄错了。RSA方案里,公钥用来加密,私钥用来解密。反过来不是不行,但安全性不达标,容易被破译。 见 https://www.zhihu.com/question/25912483 ... /252031361
rhinolt 写了:
2019-08-03 14:16
网上搜了一通,我很迷惑,是我对秘钥的理解完全错了吗?
你和onlylove对客户端用ssh-keygen生成的密钥对的用途理解错了。那个是用来身份认证的,不是用来加密信道的

SSH服务器对客户端的认证方式基本原理如下:
客户端向服务器发送用要登录的用户名,服务器收到后会到对应的用户目录去找.ssh/authorized_keys(公钥),并用它加密随机数据发给客户端。客户端收到后再用自己的私钥解密出原始数据发回服务器。服务器对比客户端发来的数据和刚才随机生成的数据,确认一致后,认为客户端拥有正确的私钥,允许登录。

至于加密信道的建立,是另外一套机制,可以阅读这篇 https://blog.csdn.net/zstack_org/articl ... s/53100545
这些用户感谢了作者 astolia 于这个帖子 (主题 2):
onlylove (2019-08-05 10:55) • rhinolt (2019-08-06 21:32)
评价: 7.41%
onlylove
论坛版主
帖子: 4794
注册时间: 2007-01-14 16:23
送出感谢: 1 次
接收感谢: 137 次

Re: 使用秘钥登录sshd服务器的问题

#5

帖子 onlylove » 2019-08-05 9:02

astolia 写了:
2019-08-04 23:00
onlylove 写了:
2019-08-03 16:09
公钥是解密用的,私钥是加密用的,你不要搞错这俩的用途
你才弄错了。RSA方案里,公钥用来加密,私钥用来解密。反过来不是不行,但安全性不达标,容易被破译。 见 https://www.zhihu.com/question/25912483 ... /252031361
rhinolt 写了:
2019-08-03 14:16
网上搜了一通,我很迷惑,是我对秘钥的理解完全错了吗?
你和onlylove对客户端用ssh-keygen生成的密钥对的用途理解错了。那个是用来身份认证的,不是用来加密信道的

SSH服务器对客户端的认证方式基本原理如下:
客户端向服务器发送用要登录的用户名,服务器收到后会到对应的用户目录去找.ssh/authorized_keys(公钥),并用它加密随机数据发给客户端。客户端收到后再用自己的私钥解密出原始数据发回服务器。服务器对比客户端发来的数据和刚才随机生成的数据,确认一致后,认为客户端拥有正确的私钥,允许登录。

至于加密信道的建立,是另外一套机制,可以阅读这篇 https://blog.csdn.net/zstack_org/articl ... s/53100545
确实……当时怎么想的 :Faint 如果解密用的公钥是公开的,那私钥还有毛用 :Faint
楼主在那个感谢上再点下取消感谢呗

顺便说这个不错
“不要去硬记。你只要想:既然是加密,那肯定是不希望别人知道我的消息,所以只有我才能解密,所以可得出公钥负责加密,私钥负责解密;同理,既然是签名,那肯定是不希望有人冒充我发消息,只有我才能发布这个签名,所以可得出私钥负责签名,公钥负责验证。”
这些用户感谢了作者 onlylove 于这个帖子:
rhinolt (2019-08-06 21:32)
评价: 3.7%
rhinolt
帖子: 70
注册时间: 2017-01-03 19:08
系统: RHEL7
送出感谢: 15 次
接收感谢: 0

Re: 使用秘钥登录sshd服务器的问题

#6

帖子 rhinolt » 2019-08-08 22:29

@onlylove
怎么追加新的秘钥?我用vim粘贴进去然后失败了
onlylove
论坛版主
帖子: 4794
注册时间: 2007-01-14 16:23
送出感谢: 1 次
接收感谢: 137 次

Re: 使用秘钥登录sshd服务器的问题

#7

帖子 onlylove » 2019-08-09 0:29

追加?ssh-copy-id?
好像是这样的……挺久不干这事了,记不太清楚了
或者你可以把公钥复制到服务器上然后试下 cat xx.pub >> .ssh/authorized_keys
回复

回到 “老旧版本支持”