简便工作时间的法宝:以密钥验证的方式来登录服务器
GolangError 防踩坑,无法分配给 map 中的结构体字段 name文章目录
一、为什么我们需要以密钥验证的方式?
两种验证方式
当我们在工作中连接服务器通常有两种方式,也就是密码验证与密钥验证:
-
密码验证:这是我们最常接触到的验证方式,无论是你的qq、微信还是淘宝、京东都依然保留着密码登录的方式,服务器也不例外。通常我们使用密码验证时,是通过我们输入密码与用户名等认证信息,传输给服务器后服务器进行验证是否该用户允许登入。
-
密钥验证:相比于密码验证,这种方式几乎不存在于我们的日常生活中。那它却为什么能提高我们的工作效率,却不能用做其他软件的验证方式。
为什么不能作为其他软件的验证方式?
- 相比于密码验证的简单直接,通过命令行交互的密钥验证通常无法让人理解。特别是对于从未接触过软件开发的人来说,使用命令行来交互简直是天方夜谭。
- 密钥验证的一次性繁琐,密钥验证在我们频繁更换登录方式时,我们必须将每一个客户端与服务器做繁琐的密钥交换,而非密码验证进行单次验证来的简单直接。
- 安全性不足,对于频繁更换客户端的用户,他们必须将自己的每一个客户端与服务器做深度绑定。那么这样的缺点就是,我们如果遗失了客户端,是否意味着我们的服务器也完全暴露在它人视野之中。
为什么可以作为服务器的验证方式,优势何在?
- 服务器与其他常用软件不同,在我们的工作过程中,我们需要连接服务器的客户端、主机往往也是公司的财产,而不是作为我们随时随地连接的娱乐方式。
- 由于公司大部分只开放内网的服务器,那么安全性也就能大大保障。
- 解决了大部分障碍,那么服务器密钥连接也就体现出来了,我们不用频繁的输入服务器密码,无论是编译、部署、调试都是一个枯燥的过程,更改一个小功能甚至需要连续调试两三次、而这个时候的所节省的时间也是提升我们工作效率的所在
二、密钥交换的详细步骤
1.在客户端生成ssh密钥
1.打开命令行工具,此处举例git bash
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa

此时便代表着我们生成成功,此时我们可以走第二步验证
2.切换至 ~/.ssh
cd ~/.ssh
切换到生成的文件夹
3.查询成功时
查询成功时,会显示出我们的ssh-rsa、右下角则是我们的用户名与主机名称

2.上传至服务器
1.ssh-copy-id
ssh-copy-id username@192.168.1.1

此时若出现 yes/no 则输入yes
如果上传成功则会出现需要输入你所要访问的服务器密码
验证成功时提示 number of keys added
我们也就实现了密钥验证的步骤
此时自动把公钥传输到服务端的 $HOME/.ssh/authorized_keys 文件夹里
2.ssh-copy-id 失败
/usr/bin/ssh-copy-id: ERROR:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ERROR: @
WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ ERROR:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ERROR: IT
IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! ERROR: Someone
could be eavesdropping on you right now (man-in-the-middle attack)!
ERROR: It is also possible that a host key has just been changed.
ERROR: The fingerprint for the ED25519 key sent by the remote host is
ERROR: SHA256:Uc7XqlYt4b9wviJzstWwD/q6cyjKdomez21NEqmlqQw. ERROR:
Please contact your system administrator. ERROR: Add correct host key
in /c/Users/qqq/.ssh/known_hosts to get rid of this message. ERROR:
Offending ECDSA key in /c/Users/qqq/.ssh/known_hosts:5
解决
此时失败是因为我们曾经在服务器厂商重置过服务器
ssh-keygen -R 你所要上传密钥的的服务器IP

此时表示我们已经结束,继续执行前一步 ssh-copy-id 即可
总结
SSH是一种安全通道协议,是用来实现字符界面的远程登陆,远程复制等功能的,我们日常生活可以使用该功能来进行远程操控,省去了很多麻烦。
解决问题、提高工作效率的问题其实都在简单的小事、简简单单的密码验证,也能为我们节省大量开发的时间、这也有利于不断的自我提升。
本文介绍了为何使用SSH密钥验证登录服务器比密码验证更安全、高效,详细阐述了密钥验证的优势及步骤,包括如何生成SSH密钥、上传至服务器,并解决可能出现的问题,旨在帮助读者提升远程工作流程的效率。

被折叠的 条评论
为什么被折叠?



