有人投票结束此问题,因为“不清楚你在问什么”。显然彻底不是一件好事,所以我会简洁:
当您通过 SSH 连接到远程主机时:是否可以直接执行程序,而不是在用户的默认 shell 下执行。
sftpssh“子系统”能够在不运行用户的默认 shell 的情况下执行,而scp子系统仍然使用它。
我认为这个问题没有一个好的解决方案(除了说服大量非*nix人放弃他们多年来一直依靠的拐杖),但我想我应该把这个问题提出来希望我弄错了。
下面是不太简洁的问题。
在我的办公室里有很多人(3-500+)都在使用各种奇怪的配置。很难预测我们编写的软件对于给定用户的行为方式,因为他们的环境可能完全违反我们的期望。
为了解决这个问题,我更改了我们的构建以剥离用户的环境,这样它就不会影响构建,并且基于该策略的成功,我们进一步将软件的执行包装在执行相同操作的 shell 脚本中。
不幸的是,启动器仍然会受到用户环境的影响。当远程执行时,用户的.cshrc/.login通常会有一堆垃圾,导致启动器甚至开始执行之前的长时间延迟。
通常我会倾向于说“修复你的废话”,但我们不是在谈论 *nix 精明的人; 这是他们多年来依赖的拐杖,他们更倾向于继续将配置问题归咎于我们的软件。
简而言之,我正在寻找一种方法来完全缩短他们愚蠢的环境脚本。
为了模拟这种情况,我将默认 shell 设置为 tcsh 并放入hostname; sleep 10my .cshrc,然后运行一些测试:
ptree显示它没有在 shell 下运行。command=在.ssh/authorized_keys/etc/ssh/sshd_configPermitUserEnvironment尝试设置SHELL
SHELL=/bin/bash ssh -o "SendEnv SHELL" localhostenvironment=或~/.ssh/enviornment设置 SHELL
我设法netcat在现有的 ssh 会话上转发 shell,但这看起来就像用雪橇打破鸡蛋——既混乱又非常不合适。
我们组织中的一个人建议创建另一个用户,通过任何方式,每个人都可以通过 ssh 以该用户身份登录,然后 ::cloudy bubble 解决方案,需要大量挥手:: 让程序以原始用户身份运行。
我对做这样的事情有点怀疑。它可能不像用 netcat 转发 shell 那样糟糕,或者像临时重命名它们那样粗暴和脆弱.cshrc,但我仍然不喜欢它。
欢迎任何建议。
| 归档时间: |
|
| 查看次数: |
10120 次 |
| 最近记录: |