.ssh/environment 在 Synology dsm3.2 上不起作用。如何修复/调试?

.ssh/environment 在 Synology dsm3.2 上不起作用。如何修复/调试?

我正在尝试通过 ssh 在 Synology NAS 上设置 git。我已经创建了 git 用户、设置了私钥身份验证并安装了 git 包。我可以使用私钥成功登录,并且 /opt/bin 中的 git 在本地(在 NAS 上)运行。

为了使其正常工作,我将 /etc/ssh/sshd_config 更改为:

PubkeyAuthentication yes                                                   
AuthorizedKeysFile      .ssh/authorized_keys                               

PermitUserEnvironment yes

但我仍然无法让它远程工作。

问题似乎出在我执行远程命令时 ssh 使用的路径上。我可以确认这一点,因为当我执行

ssh [email protected] echo \$PATH

我明白了

/usr/bin:/bin:/usr/sbin:/sbin:/usr/syno/bin

这与交互式 shell 不同,它给我的是:

PATH='/opt/bin:/opt/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/syno/bin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/syno/bin:/usr/syno/sbin:/usr/local/bin:/usr/local/sbin'

我创建了 .ssh/environment,内容如下

PATH='/opt/bin:/opt/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/syno/bin:/usr/syno/sbin:/usr/local/bin:/usr/local/sbin'

但它仍然没有解决问题。看起来它的内容没有被读取。

我尝试将环境文件权限设置为 -rw------- 和 -rw-r--r-- 但同样无济于事。

我在配置中还可能缺少哪些 sshd(?) 来阻止它读取用户环境?

答案1

解决方案是尝试通过在另一个端口上运行以调试模式运行 ssh:

/usr/sbin/sshd -d -D -p 222

然后运行客户端

ssh -v -p 222

并且可以看到它确实拾取了环境。问题是 NAS 的 ssh 重启脚本

/usr/syno/etc/rc.d/S95sshd.sh restart

并没有真正重启 sshd,只是断开了现有连接,并且无法重新读取配置。重启后,配置被恢复,一切开始正常工作。

相关内容