首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ssh远程命令执行和ulimit

ssh远程命令执行和ulimit
EN

Stack Overflow用户
提问于 2009-12-11 19:10:52
回答 4查看 16.3K关注 0票数 7

我有以下脚本:

代码语言:javascript
复制
cat > /tmp/script.sh <<EndOfScript
#!/bin/sh
ulimit -n 8192
run_app
EndOfScript

它在本地运行得很流畅,它总是可以的。但是如果我尝试通过ssh远程运行它:

代码语言:javascript
复制
scp /tmp/script.sh user@host:/tmp/script.sh
ssh user@host "chmod 755 /tmp/script.sh; /tmp/script.sh"

我得到了错误:

代码语言:javascript
复制
ulimit: open files: cannot modify limit: Operation not permitted

我还尝试了以下命令:

代码语言:javascript
复制
ssh user@host "ulimit -n 8192"

同样的错误。

看起来ssh远程命令执行在nofile限制上强制执行了1024个硬限制,但是我找不到如何修改这个缺省值。我尝试修改/etc/security/limits.conf并重启sshd,仍然是同样的错误。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-12-22 12:03:36

Fiannly找到了答案:将以下内容添加到/etc/initscript中

代码语言:javascript
复制
ulimit -c unlimited
ulimit -HSn 65535
# Execute the program.
eval exec "$4"
票数 4
EN

Stack Overflow用户

发布于 2010-11-02 23:12:54

而不是使用/etc/initscript的解决方法(并且不要在该文件中输入错误。:),如果您只想让sshd支持您在/etc/security/limits.conf中所做的设置,则应该确保您在/etc/ssh/sshd_config中具有UsePAM yes,并且/etc/pam.d/sshd列出了session required pam_limits.so (或者以其他方式包括另一个这样做的文件)。

这应该就是全部了。

在旧版本的openssh (<3.6版本)中,UsePrivilegeSeparation也有一个问题,该问题阻止了限制的遵守,但在较新的版本中得到了修复。

票数 13
EN

Stack Overflow用户

发布于 2009-12-11 19:17:11

ulimit需要超级用户权限才能运行。

我建议您请求服务器管理员在您尝试运行脚本的服务器上为您修改该值。

他/她可以通过在Linux上修改/etc/secutiry/limits.conf来实现这一点。下面是一个可能会有所帮助的示例:

代码语言:javascript
复制
*               soft    nofile          8192
*               hard    nofile          8192

在此之后,您不需要重新启动sshd。只需注销并重新登录即可。

不过,我建议你在ServerFault中问同样的问题。您将在那里获得更好的与服务器端相关的答案。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1887365

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档