Synology NAS自带套件的git server要实现git免密和通用的有一点不同,捣鼓了半天,做个记录,分享下。
具体操作步骤
1. 在 Windows 机器上生成 SSH 密钥对
- 生成 SSH 密钥对
打开 Git Bash,它是 Git for Windows 提供的一个类 Unix 的命令行环境。在 Git Bash 中输入以下命令来生成 SSH 密钥对:
1 | ssh-keygen -t rsa -b 4096 -C "your\_email@example.com" |
这里的your_email@example.com
请替换为你在 Git 中使用的邮箱地址,该邮箱地址主要用于标识这个密钥对。执行命令后,系统会提示你选择密钥保存的位置和设置密码。如果你直接按回车键,将使用默认的保存位置和空密码(不建议在生产环境中使用空密码,安全性较低)。生成的密钥对会存放在~/.ssh
目录下,默认的公钥文件名为id_rsa.pub
,私钥文件名为id_rsa
。
- 在 Git Bash 中使用以下命令查看公钥内容:
1 | cat \~/.ssh/id\_rsa.pub |
选中并复制输出的公钥内容,这是一段以ssh-rsa
开头的字符串。
2. 通过群晖 NAS 的命令行界面
首先在群晖 NAS 的管理界面中,进入 “控制面板”,找到 “终端机和 SNMP” 选项,在 “SSH” 选项卡中,勾选 “启动 SSH 功能”,并设置合适的端口号,点击 “应用”。
使用如 PuTTY 等 SSH 客户端工具,在 Windows 系统中打开 PuTTY,输入群晖 NAS 的 IP 地址和刚才设置的 SSH 端口号,点击 “打开”,输入群晖 NAS 的管理员账号和密码进行登录。
假设你已经将本地 Windows 机器上生成的公钥内容保存到了本地的public_key.pub
文件中,在 Windows 的 Git Bash 中执行以下命令将公钥内容传输到群晖 NAS 上:
1 | scp -P your\_port \~/.ssh/id\_rsa.pub username@your\_nas\_ip:/tmp/public\_key.pub |
将your_port
替换为你在群晖 NAS 上设置的 SSH 端口号,username
替换为你的群晖 NAS 用户名,your_nas_ip
替换为群晖 NAS 的实际 IP 地址。
登录到群晖 NAS 的 SSH 命令行后,执行以下命令将公钥内容添加到相应用户的authorized_keys
文件中。假设要为用户gituser
添加公钥:
1 | cat /tmp/public\_key.pub >> /volume1/homes/gituser/.ssh/authorized\_keys |
将gituser
替换为实际要设置免密访问的 Git 用户。
执行命令为authorized_keys
文件设置合适的权限:
1 | chown -R gituser:users .ssh |
这里权限很重要,我最终的问题就是因为文件夹权限不对,导致的错误。
3. 测试免密访问
在 Git Bash 中,使用 SSH 协议克隆群晖 NAS 上的 Git 仓库。例如:
1 | git clone ssh://your\_username@your\_nas\_ip/path/to/your/repository.git |
your_username
:替换为你在群晖 NAS 上用于访问 Git 仓库的用户名。
your_nas_ip
:替换为群晖 NAS 的实际 IP 地址。
path/to/your/repository.git
:替换为你要克隆的 Git 仓库的实际路径。
若克隆过程中无需输入密码,说明免密访问配置成功。此时,你在 Windows 机器上就可以流畅地对群晖 NAS 中的 Git 仓库进行推送、拉取等操作,无需再输入密码。
通过以上详细的步骤和原理讲解,相信你已经能够成功地在 Windows 机器上实现对群晖 NAS 中 Git 仓库的免密访问。这不仅提升了开发效率,也为团队协作带来了更多便利。快去试试吧!