使用密钥来和服务器通信
前言
一般情况下,我们要链接服务器除了三方的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