老师,关于密钥连接远程服务器,看看我理解对了没
## 免密钥方式连接远程服务器:
前提:先成功使用密码连接上远程服务器
* 本地(需要连接服务器的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
你要弄清楚一点,就是ssh就是用证书加密了我们的传输。
那想想,密码存哪里?密码一定存你手里,这里的密码就是id_rsa证书
那服务器怎么知道你传的是对的密码?它要校验,所以,我们要对个暗号。这里的暗号,就是id_rsa.pub
所以服务期里面存的是id_rsa.pub的内容,本地要用id_rsa的内容传给服务器校验。
再来看看你的问题:
远程服务器保存本地生成的ssh密钥 (这里我有些分不清上面的ssh目录与这里的ssh目录了,根据老师讲的我推测这里是服务器端的终端)
远程服务器肯定不是存本地的密钥!
然后,再来说目录,无论是服务器还是本地,都是~/.ssh目录,这个是ssh默认目录!只不错存的内容不一样,服务器存authorized_keys文件,本地存密钥+配置config
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星