本文介绍群晖NAS的SSH配置步骤及密钥认证问题解决方案,适用于Windows和Linux/Mac系统。
开启SSH并完成基本配置
1. 开启SSH服务
- 登录群晖DSM控制面板
- 进入「终端机和SNMP」,勾选「启用SSH功能」
- 设置端口(默认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方式:
- 安装PuTTY,打开PuTTYgen
- 选择"ED25519",点击"Generate"并移动鼠标
- 设置密钥备注,可选设置密码
- 保存私钥,复制生成的公钥文本
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)
- 用密码登录NAS
- 创建.ssh目录:
mkdir -p ~/.ssh - 编辑authorized_keys:
nano ~/.ssh/authorized_keys - 粘贴公钥并保存(Ctrl+O, Ctrl+X)
一、常见问题
连接NAS时遇到 Permission denied (publickey) 错误,说明SSH密钥认证失败。
二、问题原因
失败的主要原因:
- 目录和文件权限:SSH对权限要求严格
- 密钥不匹配:本地私钥与NAS上公钥不对应
- 公钥格式问题:格式错误或损坏
- SSH配置问题:服务器不支持密钥认证
- 目录权限过松:主目录权限为777时SSH会拒绝连接
- 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)
- 打开PuTTY,输入NAS的IP和端口
- 在Auth部分选择私钥文件
- 在Data部分输入用户名
- 保存会话设置并连接
四、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格式:
- 在PuTTYgen中加载.ppk文件
- 点击"Conversions > Export OpenSSH key"
- 保存为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密钥认证既安全又方便。
有问题欢迎留言,我会尽快回复!