目标服务器操作
目标服务器生成密钥对
## 进入系统的指定目录
cd ~/.ssh
## filename 是公钥和私钥的文件名称
## 执行完成后,查看当前目录是否出现两个文件,一个是 .pub结尾的文件,这个是公钥,另外一个是filename名称的文件,这个是私钥
ssh-keygen -t ed25519 -f ~/.ssh/[filename] -N ""
## 把公钥的内容,拷贝到 authorized_keys 文件中
cat [filename].pub >> authorized_keys
## 更改目录和文件的权限
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
查看SSH配置,是否开启密钥登录
## 进入系统的指定目录
cd /etc/ssh
## 查看ssh文件配置
cat sshd_config
## 主要看两个配置,一个是是否允许私钥登录,还有一个是是否允许公钥登录root(根据实际情况选择)
## PubkeyAuthentication yes # 是否允许公钥登录系统
## PermitRootLogin yes # 是否允许公钥免密登录系统,并且是root用户
## 如果修改了,那么需要重启ssh
systemctl restart sshd
# -vvv 参数用于输出极详细的调试日志
# [filename] 替换为你的私钥文件名
# user@hostname 替换为目标服务器的用户名和 IP 地址
ssh -vvv -i ~/.ssh/[filename] user@hostname "echo success"
## 【验证标准】
## 1. 如果末尾成功输出了 "success",说明配置成功。
## 2. 如果连接失败,可在日志中搜索 "Authentication succeeded (publickey)"
## 或查看是否有 "Permission denied" 报错,据此排查权限或配置问题。
本机操作
一次性终端有效
# 1. 启动后台的管家进程
eval $(ssh-agent -s)
# 2. 把你的私钥添加给管家(假设你的私钥文件叫 id_rsa)
ssh-add ~/.ssh/id_rsa
持久化有效
# 创建或打开配置文件
vim ~/.ssh/config
## 添加如下内容(hostname是连接时的自定义主机名):
Host myserver
# 目标服务器的公网 IP 或 域名
HostName hostname
# 登录服务器的用户名
User user
# 显式指定该服务器使用的私钥绝对路径
IdentityFile ~/.ssh/[filename]
## 验证下,连接成功后,就可以直接操作了
ssh myserver "echo success"
SCP
配置指南
当配置了持久化有效后,scp也会继承配置。因此scp可以直接使用
# 1. 上传本地文件到服务器(使用别名 myserver)
scp ./local_file.txt myserver:/root/
# 2. 从服务器下载整个文件夹到本地当前目录
scp -r myserver:/var/www/html/ .