使用密钥来和服务器通信

前言

一般情况下,我们要链接服务器除了三方的GUI工具 如 xshell、finalshell外。
我们还会使用一些没有UI的终端去链接,比如windows的powerShell、mac的Terminal、ios的serverCat(非自带)和andriod的termius (非自带)等等。

我们买的服务器一般都预装了openSSH(以及其依赖和OpenSSL),它就是远程连接相关插件。
ssh不仅支持账号密码的连接方式,还支持更为优秀的密钥链接。

ssh的配置文件在 /etc/ssh/sshd_config 这个文件中,常见的配置如

...
Port 31825 # ssh 服务端口号
PermitRootLogin yes # 开启root账号
PasswordAuthentication yes # 允许账密登录
PubkeyAuthentication yes # 允许密钥登录
AuthorizedKeysFile	.ssh/authorized_keys # 授信任的(公)密钥列表

ssh的账密登录还是挺简单,只需要在客户端上执行 ssh root@192.168.3.241 ,即可发起 链接远端既服务器的请求(第一次登录时可能会询问你是否接受新的主机指纹,输入yes确认即可),但是缺点相对明显,每次ssh链接请求都需要输入密码,安全性不高,所以引出了我们接下来的 密钥登录。

客户端生成密钥

macOS和Linux通常自带OpenSSH,Windows在Win10以后,也自带OpenSSH,所以我们直接使用终端进行 密钥对 生成:

ssh-keygen
# 过程会产生一些交互,我们一路回车默认即可,但为了方便深入学习 我将交互询问记录下来了如下:
# Enter file in which to save the key:密钥存放地址,默认为当前用户目录下的.ssh文件夹下。
# Enter passphrase:保护私钥的密码,一般留空,直接和上面一样回车即可。
# Enter same passphrase again:确认私钥密码

最终会在会生一对密钥-> 公钥+私钥:
.
id_rsa:生成的私钥,保留在客户端即可,理应谁也不给。
id_rsa.pub:生成的公钥,打开后,复制内容,后文部署到服务器上(后边讲)。

服务端部署公钥

复制如上客户端生成的 公钥内容,到服务器的 ~/.ssh/authorized_keys 文件中。

如果你要是嫌手动麻烦,客户端可以使用 ssh-copy-id user@serverIp 将自己的公钥推送到服务端,不过这个过程需要输入服务端的密码。

客户端链接服务端

此时,直接在客户端输入链接服务端的ssh请求,将不会再弹出输入密码的请求,而是直接链接上,如

ssh root@192.168.3.241

总结

客户端创建密钥对,将其中的公钥给远程端(远程端并将其放入自己的好友管理中[authorized_keys]),后续客户端就可以控制远程端了。
拟人化来说就是 相当于你客户端提前给远程端递了个名片认识了下,后续客户端直接就找远程端办事了。

简单来说:拥有私钥的那个人可以控制公钥持有者

扩展

rsync

rsync是文件传输工具,比如两台已经ssh认证过的(上边步骤),可以直接使用如下命令

# 将本地test.mp3发送给196.128.1.2的home目录下
rsync /home/test.mp3 root@196.128.1.2:/home

如果远程端的ssh端口不是22,则rsync是发不过去的,需要更改一下

rsync -e "ssh -p 1234" /home/test.sh root@196.128.1.2:/home

另外,第一次发送时,会有一个提示:是否将其缓存起来

The authenticity of host '196.128.1.2:1234 ' can't be established.
ECDSA key fingerprint is SHA256:Bholjj6jfIo0gRk5ghqPrC62vJWaHmn29UcYW0g88Hw.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes

## 输入yes后,会提示 已经保存到 /root/.ssh/known_hosts文件中了
Warning: Permanently added '196.128.1.2:1234 ' (ECDSA) to the list of known hosts.

参考

https://mintimate.cn/2021/12/03/connectToLinux
https://blog.csdn.net/h1008685/article/details/137458453

posted @ 2024-10-12 13:56  丁少华  阅读(16)  评论(0编辑  收藏  举报