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/10 7:00:18

这可能是世界上最好的线性代数教程了!

The contribution of mathematics, and of people, is not computation but intelligence.数学和人类的贡献&#xff0c;不在于计算&#xff0c;而在于智慧。——Gilbert Strang, Linear Algebra and Its Applications你是否曾觉得线性代数枯燥难懂&#xff1f;是否曾在矩阵与行…

作者头像 李华
网站建设 2026/4/15 20:08:03

【PyTorch】2024保姆级安装教程-Python-(CPU+GPU详细完整版)-

PyTorch 安装指南&#xff08;CPU/GPU 版本&#xff09;环境准备确保已安装 Python&#xff08;推荐 3.8-3.10 版本&#xff09;和 pip 包管理工具。可通过以下命令验证&#xff1a;python --version pip --version对于 GPU 版本&#xff0c;需提前安装 CUDA 工具包&#xff08…

作者头像 李华
网站建设 2026/4/15 20:08:06

Linux应用与驱动开发:mmap和内存映射

学习笔记&#xff1a;Linux 驱动开发之 mmap 与内存映射 1. 核心概念&#xff1a;什么是 mmap&#xff1f; mmap (Memory Map) 是一种内存映射文件的方法。在嵌入式 Linux 驱动开发中&#xff0c;它主要用于将外设的物理地址&#xff08;如 GPIO 寄存器&#xff09;映射到用户进…

作者头像 李华