群晖NAS SSH密钥认证完全指南

1,505 阅读3分钟

本文介绍群晖NAS的SSH配置步骤及密钥认证问题解决方案,适用于Windows和Linux/Mac系统。

开启SSH并完成基本配置

1. 开启SSH服务

  1. 登录群晖DSM控制面板
  2. 进入「终端机和SNMP」,勾选「启用SSH功能」
  3. 设置端口(默认22)并点击「应用」

2. 生成SSH密钥对

Linux/Mac系统

ssh-keygen -t ed25519 -f ~/.ssh/nas_key -C "群晖NAS密钥"

Windows系统

PowerShell方式(Win10/11内置OpenSSH):

ssh-keygen -t ed25519 -f "$env:USERPROFILE\.ssh\nas_key" -C "群晖NAS密钥"

PuTTY方式:

  1. 安装PuTTY,打开PuTTYgen
  2. 选择"ED25519",点击"Generate"并移动鼠标
  3. 设置密钥备注,可选设置密码
  4. 保存私钥,复制生成的公钥文本

3. 上传公钥到NAS

Linux/Mac系统

ssh username@NAS_IP  # 先用密码登录
mkdir -p ~/.ssh
echo "ssh-ed25519 AAAAC3...(公钥内容)" > ~/.ssh/authorized_keys

Windows系统(PowerShell)

ssh username@NAS_IP  # 先用密码登录
mkdir -p ~/.ssh
$pubKey = Get-Content "$env:USERPROFILE\.ssh\nas_key.pub"
ssh username@NAS_IP "echo $pubKey >> ~/.ssh/authorized_keys"

Windows系统(PuTTY)

  1. 用密码登录NAS
  2. 创建.ssh目录: mkdir -p ~/.ssh
  3. 编辑authorized_keys: nano ~/.ssh/authorized_keys
  4. 粘贴公钥并保存(Ctrl+O, Ctrl+X)

一、常见问题

连接NAS时遇到 Permission denied (publickey) 错误,说明SSH密钥认证失败。

二、问题原因

失败的主要原因:

  1. 目录和文件权限:SSH对权限要求严格
  2. 密钥不匹配:本地私钥与NAS上公钥不对应
  3. 公钥格式问题:格式错误或损坏
  4. SSH配置问题:服务器不支持密钥认证
  5. 目录权限过松:主目录权限为777时SSH会拒绝连接
  6. Windows行尾符:CRLF行尾符导致认证失败

三、解决方法

1. 修正目录权限

chmod 755 /volume1/homes/username

2. 设置.ssh权限

chmod 700 /volume1/homes/username/.ssh
chmod 600 /volume1/homes/username/.ssh/authorized_keys

3. 确认使用正确密钥

Linux/Mac

cat ~/.ssh/nas_key.pub  # 查看公钥
echo "ssh-ed25519 AAAAC3...(公钥内容)" > ~/.ssh/authorized_keys  # 更新公钥

Windows

Get-Content "$env:USERPROFILE\.ssh\nas_key.pub"  # 查看公钥
# 通过SSH会话更新公钥
echo "ssh-ed25519 AAAAC3...(公钥内容)" > ~/.ssh/authorized_keys

4. 测试连接

Linux/Mac

ssh -i ~/.ssh/nas_key username@NAS_IP

Windows(OpenSSH)

ssh -i "$env:USERPROFILE\.ssh\nas_key" username@NAS_IP

Windows(PuTTY)

  1. 打开PuTTY,输入NAS的IP和端口
  2. 在Auth部分选择私钥文件
  3. 在Data部分输入用户名
  4. 保存会话设置并连接

四、Windows特有问题

行尾符问题

Windows的CRLF行尾符可能导致认证失败:

# 在NAS上执行
dos2unix ~/.ssh/authorized_keys

# 或使用
tr -d '\r' < ~/.ssh/authorized_keys > ~/.ssh/temp_file && mv ~/.ssh/temp_file ~/.ssh/authorized_keys

密钥格式转换

将PuTTY的.ppk转换为OpenSSH格式:

  1. 在PuTTYgen中加载.ppk文件
  2. 点击"Conversions > Export OpenSSH key"
  3. 保存为OpenSSH格式的私钥文件

五、简化连接配置

通过配置SSH客户端,可以一键连接NAS,无需记忆复杂参数。

配置文件格式

Host nas
    HostName 192.168.1.100
    User username
    Port 22
    IdentityFile [密钥路径]
    ConnectTimeout 10

系统差异

Linux/Mac

  • 文件位置:~/.ssh/config
  • 权限设置:chmod 600 ~/.ssh/config
  • 密钥路径:~/.ssh/nas_key

Windows

  • 文件位置:%USERPROFILE%\.ssh\config
  • 权限设置:icacls "%USERPROFILE%\.ssh\config" /inheritance:r /grant:r "%USERNAME%:(R,W)"
  • 密钥路径:C:\Users\你的用户名\.ssh\nas_key

PuTTY 不使用配置文件,直接保存会话设置即可。

连接命令

配置后只需一条命令连接:

ssh nas

六、最佳实践

  • 目录权限:主目录755、.ssh目录700、authorized_keys文件600
  • 为不同设备使用不同密钥
  • 保留密码认证作为备选
  • Windows用户优先使用OpenSSH而非PuTTY
  • 定期更新SSH客户端和服务器

七、总结

SSH密钥认证问题主要源于权限设置和密钥配置错误。检查权限和密钥后,基本能解决大部分问题。正确设置后,SSH密钥认证既安全又方便。


有问题欢迎留言,我会尽快回复!