我正在尝试在 OS X 服务器上通过 ssh 设置 svn 。为了做到这一点,我读到我需要一个包装器来设置 umask 并 - 在我的例子中 - 设置存储库根。一种快速而肮脏的方法是重命名/usr/bin/svnserve
并将包装器脚本放置在该位置。然而,SIP 会保护该位置免受任何更改,而且无论如何,我更喜欢更干净的解决方案。
所以我创建了一个包装脚本/usr/local/bin/svnserve
并创造了/etc/ssh/sshrc
with
PATH=/usr/local/bin:$PATH
我已经通过写入日志文件验证了当从客户端启动远程 ssh 命令时该文件会被执行。但是,修改后的 PATH 似乎没有传递到命令环境:
ssh hostname 'echo $PATH'
Password:
/usr/bin:/bin:/usr/sbin:/sbin
我是否忽略了什么?或者是/etc/ssh/sshrc
设置路径的地方错误?如果是的话,什么地方合适?
我尝试过的其他地方:/etc/profile
and /etc/bashrc
,但这些似乎都没有与 ssh 命令一起执行。
注意:它不是更改客户端行为的选项(例如,向命令添加所需的路径)。
/etc/sshrc
与远程发出的命令不在同一 shell 实例中运行,因此 PATH 更新不会持续存在。
一些可用的选项:
- 您可以设置
AcceptEnv PATH
在服务器上将其配置为接受远程系统发送的 PATH,以及SendEnv PATH
在客户端(在~/.ssh/config
,或作为 ssh 的参数传递-o
, or in /etc/ssh/ssh_config
).
- In
/etc/ssh/sshd_config
在服务器上,您可以设置选项PermitUserEnvironment
to yes
;完成后,变量和值可以添加到~/.ssh/environment
在服务器上的个人用户帐户中。
- 您可以使用
ForceCommand
覆盖远程请求的命令,可以使用类似的命令/usr/bin/env PATH=/usr/local/bin:/usr/bin:/bin svnserve
或者简单地/usr/local/bin/svnserve
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)