老师,关于密钥连接远程服务器,看看我理解对了没

老师,关于密钥连接远程服务器,看看我理解对了没

## 免密钥方式连接远程服务器:

前提:先成功使用密码连接上远程服务器

* 本地(需要连接服务器的pc)先生成一个ssh的钥匙根

`cd ~/.ssh`

`ls` 

id_rsa保存的是私钥,id_rsa.pub保存的是公钥,config保存的是ssh的配置

`ssh-keygen`生成一个新的公钥


* 远程服务器保存本地生成的ssh密钥 (这里我有些分不清上面的ssh目录与这里的ssh目录了,根据老师讲的我推测这里是服务器端的终端)

`cd ~/.ssh/`进入ssh目录,如果没有.ssh目录,就新建一个ssh目录`mkdir -p ~/.ssh`

`ls` 显示保存授权的密钥文件authorized_keys

`vi authorized_keys`使用vim编辑器编辑,将本地刚才生成的公钥粘贴到该文件内,而后`:wq`保存退出


* 回到本地在config内配置

```

Host 主机名(自取)

Port 指定本地连接服务器的端口

HostName 服务器主机Ip地址

User root(用户名)

IdentityFile ~/.ssh/id_rsa

IdentitiesOnly yes

```

而后保存退出

`ssh imooc(config内配置的主机名)`完成连接


第一次弄,有点晕,以前用windows时都是每次提交代码到git要输一次密码,后来用mac时弄了免密钥的方式,也是照着网上教程弄的,知其然不知其所以然,对比这个,好像没有服务器端操作这步。望老师指出我理解不对的地方,谢谢老师

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
Brian 2021-06-08 17:23:15

你要弄清楚一点,就是ssh就是用证书加密了我们的传输。

那想想,密码存哪里?密码一定存你手里,这里的密码就是id_rsa证书

那服务器怎么知道你传的是对的密码?它要校验,所以,我们要对个暗号。这里的暗号,就是id_rsa.pub

所以服务期里面存的是id_rsa.pub的内容,本地要用id_rsa的内容传给服务器校验。

再来看看你的问题:

远程服务器保存本地生成的ssh密钥 (这里我有些分不清上面的ssh目录与这里的ssh目录了,根据老师讲的我推测这里是服务器端的终端)

远程服务器肯定不是存本地的密钥!

然后,再来说目录,无论是服务器还是本地,都是~/.ssh目录,这个是ssh默认目录!只不错存的内容不一样,服务器存authorized_keys文件,本地存密钥+配置config

  • 提问者 见信 #1

    ​捋了捋,就是使用我们配置了的config下的IdentityFile连接服务器,然后服务器里面授权保存的是我们本地电脑的公钥,也就是服务器授权了我们本地电脑,我们用ssh-keygen生成的其实是一个私钥,所以它保存在id_rsa里。是这样吗?

    2021-06-08 17:45:10
  • Brian 回复 提问者 见信 #2
    理解正确!!
    2021-06-16 07:02:11
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师