news 2026/4/15 21:54:28

使用SSH密钥实现免密登录远程服务器

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
使用SSH密钥实现免密登录远程服务器

文章目录

第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编辑器(适合习惯图形界面的用户)

  1. 打开VSCode

  2. Ctrl+P(或Cmd+P在Mac上)打开快速访问

  3. 输入~/.ssh/config并按回车

  4. 如果文件不存在,VSCode会提示创建新文件

  5. 编辑完成后按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

在编辑器中:

  1. 将光标移动到文件末尾(如果文件已存在)

  2. 粘贴你的公钥内容(完整一行)

  3. 确保没有多余的空格、换行或注释

正确格式示例

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:退出服务器
exit

3.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文件格式错误检查是否为完整一行
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/5 11:08:04

AI 会写作业了,但学生还会思考吗?

最近&#xff0c;张文宏医生的一段视频被频繁推送到我面前。他说得略微有争议&#xff08;当然也可能是媒体只截了其中一部分&#xff09;&#xff1a;如果年轻医生没有经过系统训练&#xff0c;就直接相信 AI 给出的诊断&#xff0c;这是不负责任的。这句话&#xff0c;看似在…

作者头像 李华
网站建设 2026/4/7 12:59:54

Anthropic 重磅发布 Cowork:让普通人都能用上Claude Code!

你是否也有这样的困扰&#xff1a;下载文件夹乱成一锅粥&#xff0c;找不到需要的文件&#xff1b;一堆消费截图散落在手机相册里&#xff0c;整理成表格要花半天时间&#xff1b;零零散散的工作笔记堆积如山&#xff0c;却迟迟理不出头绪……过去&#xff0c;这些问题只能靠人…

作者头像 李华
网站建设 2026/4/8 13:12:17

从阅文招聘JD看网文平台算法化-网文平台拥抱科技·卓伊凡

从阅文招聘JD看网文平台算法化-网文平台拥抱科技卓伊凡 “智能搜索”岗位往往比“推荐算法”更能暴露一家内容平台的真实技术路线——因为搜索是内容分发的“入口层基础设施”&#xff0c;一旦它智能化&#xff0c;后面推荐、增长、风控、审核&#xff0c;都会被同一套数据与模…

作者头像 李华
网站建设 2026/3/31 22:11:19

Flink:窗口同组联结(Window CoGroup)

本文重点 在前面的课程中,无论是窗口联结还是间隔联结,都会将两条流中的元素进行两两匹配,然后分别以第一个元素和第二个元素的方式输入到处理函数中,如果我们不想这样匹配该如何操作? API apply()传入一个CoGroupFunction,它的定义如下: public interface CoGroupFu…

作者头像 李华
网站建设 2026/4/15 5:44:28

利用multisim仿真电路图进行频率响应测试:操作指南

用Multisim做频率响应测试&#xff1a;从原理到实战的完整指南你有没有遇到过这样的情况&#xff1f;电路焊好了&#xff0c;通电也正常&#xff0c;可一测信号——高频部分莫名其妙衰减了&#xff0c;相位还乱飘。回头翻设计&#xff0c;才发现某个电容选大了十倍&#xff0c;…

作者头像 李华
网站建设 2026/4/7 17:17:56

Proteus8.9下载安装教程:小白指南(含资源获取渠道)

从零开始安装 Proteus 8.9&#xff1a;工程师亲测的实战避坑指南你是不是也曾在深夜对着“License Not Found”弹窗抓耳挠腮&#xff1f;是不是下载了十几个G的安装包&#xff0c;点开却提示“缺少 VDM 引擎”&#xff1f;又或者&#xff0c;好不容易装上了&#xff0c;仿真时单…

作者头像 李华