为什么不使用 sshrc 中设置的 $PATH?

2024-06-25

我正在尝试在 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(使用前将#替换为@)

为什么不使用 sshrc 中设置的 $PATH? 的相关文章

随机推荐

  • beautifulsoup find_all 错误?

    现在我正在使用 beautiful soup 来解析 html 页面 但有时我通过find all得到的结果小于页数 例如这个页面有 18 个标题跨度 但是当我使用以下代码时 它只有两个 谁能告诉我为什么 先感谢您 soup Beautif
  • 如何使用 vue-google-charts 创建组织结构图

    按照使用 vue google charts 插件的说明进行操作 https www npmjs com package vue google charts https www npmjs com package vue google ch
  • com.jcraft.jsch.JSchException:算法协商失败

    我正在尝试从客户端计算机连接 sftp 服务器 但是 com jcraft jsch JSchException 算法协商失败 我收到这种错误 com jcraft jsch JSchException Algorithm negotiat
  • jQuery.closest() 实现的 DOM / 纯 JavaScript 解决方案?

    这是我试图查询的标记 因此给出标记 table class non unique identifier table tr td div div td tr table 我正在查询 unique identifier var myDiv do
  • GCC 4.7/4.8 作为 Xcode 的 C/C++ 编译器

    我现在正在开发一个 C 项目 我希望使用 C 11 功能 在这个项目中 我正在使用该库NTL用于数论的东西 由于 Xcode 具有舒适自动完成功能 我使用 Xcode 编写代码 并且 NTL 库与标志 lntl 静态链接 现在 我希望使用一
  • Javascript 日期转 xs:dateTime

    有没有一种简单的方法将标准 Javascript 日期格式转换为 xs dateTime 所以我有一个日期值 new Date 我需要以下格式 2015 01 16T20 26 53 974 03 00 so 2015 年 1 月 16 日
  • 当给定部分限定类型名称时,Type.GetType 如何工作?

    在很多地方我都遇到过以下形式的部分限定类型名称FullTypeName AssemblyName 即像Type AssemblyQualifiedName仅没有版本 区域性和 publicKeyToken 限定符 我的问题是如何将其转换为相
  • 有效地选择与 Pandas DataFrame 中的多个值之一匹配的行[重复]

    这个问题在这里已经有答案了 Problem 给定 Pandas DataFrame 中的数据 如下所示 Name Amount Alice 100 Bob 50 Charlie 200 Alice 30 Charlie 10 我想选择所有行
  • MS SQL 2005 备份能否恢复到 MS SQL 2008 实例上?

    是否可以将 SQL Server 2005 数据库的备份恢复到 SQL Server 2008 的实例上 我需要重建一台服务器 因为它变得相当糟糕 所以我计划借此机会升级到 SQL 2008 并想知道我是否能够正常恢复我的备份 从 2005
  • 如何在命令提示符中仅显示具有备用数据流的文件

    我知道要在命令提示符中显示所有文件 如果有 的备用数据流 这是命令dir R 但是 如果我只想显示具有备用数据流的文件 该怎么办 dir s r findstr e DATA or dir r findstr e DATA 第一个将在所有子
  • 使 django 中的内联表单集成为必需

    我是 django 的新手 到目前为止 我使用的是 symfony PHP 框架 我的问题是这样的 我有一个模型事件和模型日期 日期有一个事件的外键 因此事件可以 或应该 有一个或多个日期 现在我想要一个表单来创建事件 并且该表单应包含一个
  • 将 Linq 表达式转换为 SQL Server 查询

    我正在使用一些 crm 框架 该框架没有任何内部 orm 并且不使用实体框架 仅使用纯 sql 查询 我在数据库中的每个表都有实体 所以我有例如 public class Customer public string FirstName g
  • 分支和文件夹的 gitolite 权限

    在 gitolite 我想要 developers能够推送到除以下之外的任何分支master I want user1能够推送到任何分支 包括master 除了不是某个目录master 我该怎么做呢 这应该解决以下两个问题 repo are
  • 为什么Java中没有多重继承,但允许实现多个接口?

    Java 不允许多重继承 但它允许实现多个接口 为什么 因为接口只指定what班级正在做 而不是how它正在这样做 多重继承的问题是两个类可能定义不同的方式做同样的事情 并且子类无法选择选择哪一个
  • C++ 类型特征

    我知道它们对有关您实例化它们的类型的信息进行编码 但是它们是如何工作的 比如说 类型特征std is class 它是如何工作的 所有的实现看起来都像是空的结构 我必须承认我正在摸不着头脑 这些名字看起来足够具有描述性 所以我能理解它们的意
  • 将textView和图像对齐在同一行JAVA [关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 我创建了Food使用下面的代码选项卡 JTabbedPane tabbedPane new JTabbedPane JT
  • 为什么带有 unsigned long long 参数的 std::bitset 构造函数未标记为显式?

    标准库类模板std bitset
  • 如何在 Watson Assistant 上切换技能?

    目前 在 IBM Watson Assistant 中 您只能向助理分配一项技能 如何以编程方式交换助手的主要技能 未来的计划是让 Assistant 支持多种技能以及自定义技能 暂时作为数据 henrik https stackoverf
  • 基于两列值的VLOOKUP

    我有一个表 其中一列包含用户 ID 这些被多次输入以显示特定主题的结果 ID Topic Pass Fail 71086686 Science P 71086686 Maths P 71086686 Tech P 71086686 ICT
  • 为什么不使用 sshrc 中设置的 $PATH?

    我正在尝试在 OS X 服务器上通过 ssh 设置 svn 为了做到这一点 我读到我需要一个包装器来设置 umask 并 在我的例子中 设置存储库根 一种快速而肮脏的方法是重命名 usr bin svnserve并将包装器脚本放置在该位置