文章目录
第1步:生成SSH密钥对及权限设置
1.1 生成密钥对
1.2 关键权限设置(立即执行)
1.3 验证密钥对生成
第2步:配置SSH Config文件及目录权限
2.1 确保SSH目录存在且权限正确
2.2 创建或编辑Config文件
2.3 添加服务器配置
2.4 设置Config文件权限(必须步骤!)
第3步:部署公钥到远程服务器
3.1 在本地复制公钥内容
3.2 登录服务器并配置(逐步执行)
步骤1:使用密码登录
步骤2:确保远程.ssh目录存在且权限正确
步骤3:编辑authorized_keys文件
步骤4:保存并设置关键权限
步骤5:验证文件内容
步骤6:退出服务器
3.3 自动化部署方法(使用ssh-copy-id)
第4步:测试连接及问题排查
4.1 基础测试
4.2 详细调试(如果失败)
4.3 常见权限问题排查表
第1步:生成SSH密钥对及权限设置
1.1 生成密钥对
在本地终端执行以下命令,生成安全强度高的 RSA 密钥对:
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa参数说明:
-t rsa:指定密钥类型为 RSA-b 4096:指定密钥长度为 4096 位(更安全)-f ~/.ssh/id_rsa:指定生成的私钥文件路径和名称
执行过程示例:
使用空密码短语(直接回车)
接受默认存储位置
1.2 关键权限设置(立即执行)
生成密钥后,必须设置正确的权限:
# 设置私钥为仅自己可读写(600权限) chmod 600 ~/.ssh/id_rsa # 设置公钥权限(644权限即可) chmod 644 ~/.ssh/id_rsa.pub # 检查设置结果 ls -l ~/.ssh/id_rsa ~/.ssh/id_rsa.pub预期正确输出:
-rw------- 1 username staff 1766 Jan 01 10:00 /Users/username/.ssh/id_rsa
-rw-r--r-- 1 username staff 414 Jan 01 10:00 /Users/username/.ssh/id_rsa.pub
1.3 验证密钥对生成
# 确认两个文件都已生成 ls -la ~/.ssh/id_* # 查看公钥内容(用于后续步骤) cat ~/.ssh/id_rsa.pub公钥内容应以ssh-rsa AAAAB3NzaC1yc2...开头。
第2步:配置SSH Config文件及目录权限
2.1 确保SSH目录存在且权限正确
# 如果~/.ssh目录不存在,则创建它 mkdir -p ~/.ssh # 设置.ssh目录权限为700(仅自己可访问) chmod 700 ~/.ssh # 验证目录权限 ls -ld ~/.ssh应显示drwx------(700权限)。
2.2 创建或编辑Config文件
方法一:使用终端编辑器(推荐给熟悉终端的用户)
nano ~/.ssh/config方法二:使用VSCode编辑器(适合习惯图形界面的用户)
打开VSCode
按
Ctrl+P(或Cmd+P在Mac上)打开快速访问输入
~/.ssh/config并按回车如果文件不存在,VSCode会提示创建新文件
编辑完成后按
Ctrl+S(或Cmd+S)保存
(详细教程:VSCode远程开发实战:SSH连接服务器详解(附仙宫云平台示例))
注意:即使用VSCode编辑,仍需确保文件权限正确(见2.4节)
2.3 添加服务器配置
在配置文件中按以下格式输入内容:
Host my_server # 自定义别名 HostName your_server.com # 实际服务器地址 User your_username # 登录用户名 IdentityFile ~/.ssh/id_rsa # 指定私钥路径 Port 22 # SSH端口,默认可省略配置示例(根据实际情况修改):
Host comfyui
HostName n8c7ouu39gjglrzo.ssh.x-gpu.com
Port 50387
User root
IdentityFile ~/.ssh/id_rsa # 私钥文件存储位置
2.4 设置Config文件权限(必须步骤!)
无论用哪种方式编辑,都必须设置正确权限:
# config文件权限应为600或644 chmod 600 ~/.ssh/config # 检查权限设置 ls -l ~/.ssh/config应显示-rw-------(600权限)或-rw-r--r--(644权限)。
第3步:部署公钥到远程服务器
3.1 在本地复制公钥内容
方法A(Mac推荐):
pbcopy < ~/.ssh/id_rsa.pub # 无输出表示成功,公钥已复制到剪贴板方法B(通用):
cat ~/.ssh/id_rsa.pub # 手动复制全部输出内容(从ssh-rsa到结尾)3.2 登录服务器并配置(逐步执行)
步骤1:使用密码登录
ssh your_username@your_server.com # 输入密码登录步骤2:确保远程.ssh目录存在且权限正确
# 创建.ssh目录(如果不存在) mkdir -p ~/.ssh # 设置严格的目录权限(必须为700) chmod 700 ~/.ssh # 验证权限 ls -ld ~/.ssh # 应显示:drwx------ 或 drwx------ # 进入.ssh目录 cd ~/.ssh步骤3:编辑authorized_keys文件
# 使用nano编辑器(或vi) nano authorized_keys在编辑器中:
将光标移动到文件末尾(如果文件已存在)
粘贴你的公钥内容(完整一行)
确保没有多余的空格、换行或注释
正确格式示例:
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDx...(很长)...== username@local
步骤4:保存并设置关键权限
# 保存nano:Ctrl+O → Enter → Ctrl+X # 设置authorized_keys文件权限为600(必须!) chmod 600 authorized_keys # 检查权限设置 ls -l authorized_keys # 应显示:-rw------- 或 -rw------- # 检查目录权限(确保仍是700) ls -ld ~/.ssh # 应显示:drwx------ 或 drwx------步骤5:验证文件内容
# 确认公钥已正确添加 cat authorized_keys # 应显示你刚才粘贴的内容,且为完整一行 # 统计行数(如果有多组密钥) wc -l authorized_keys步骤6:退出服务器
exit3.3 自动化部署方法(使用ssh-copy-id)
如果你知道服务器密码,可以使用一键部署:
ssh-copy-id -i ~/.ssh/id_rsa.pub your_username@your_server.com参数说明:
-i~/.ssh/id_rsa.pub:指定私钥文件的位置为~/.ssh/id_rsa.pub
执行过程示例:
第4步:测试连接及问题排查
4.1 基础测试
# 使用配置的别名连接 ssh my_server成功标志:无需输入密码,直接显示服务器命令行提示符。
本地终端:
vcode:
4.2 详细调试(如果失败)
# 显示详细的连接过程 ssh -vvv my_server 2>&1 | tail -30关注输出中的关键信息:
Offering public key:客户端是否提供了密钥Authentication succeeded:认证是否成功Permission denied:权限相关问题
4.3 常见权限问题排查表
| 问题现象 | 可能原因 | 解决方案 |
|---|---|---|
| 仍要求输入密码 | authorized_keys权限错误 | chmod 600 ~/.ssh/authorized_keys |
| 连接被拒绝 | .ssh目录权限过宽 | chmod 700 ~/.ssh |
| "Bad permissions"错误 | 本地私钥权限错误 | chmod 600 ~/.ssh/id_rsa |
| 认证失败但无错误 | authorized_keys文件格式错误 | 检查是否为完整一行 |