标签: shell

保护 SSH 隧道

我们有一个使用 SSH 连接到服务器的应用程序:应用程序的网络流量(数据库、一些自定义 TCP 协议等)通过 SSH 连接进行隧道传输。

我们在服务器上使用密钥对和非特权帐户,但用户仍然可以使用他们的密钥登录服务器,或者做任何他们想做的端口重定向。

有没有办法将 SSH 服务器配置为仅允许某些隧道(受隧道的结束地址和端口限制)并禁用 shell 访问?(我们使用 OpenSSH)

[编辑]

我遇到了这篇文章,似乎删除 shell 访问权限还不够。相应地更改了标题和描述。

ssh shell tunneling

1
推荐指数
1
解决办法
627
查看次数

追踪shell命令的来源

在我们其中一台服务器的 apache 错误日志 (/usr/local/apache/logs/error_log) 中,我们看到一个 shell 命令经常运行并抛出错误,如下所示:

sh: list_price: command not found
Run Code Online (Sandbox Code Playgroud)

list_price 是我们在 50 多个网站上的电子商务系统中使用的一个字段,当然没有任何可疑之处。问题是我们不知道这是如何传递给 shell 的——我们已经检查了 exec() 和 system() 的所有出现,但我们看不出这是如何传递的。有什么方法可以让我们更容易地检测到它的来源可能是什么,因为没有什么比我上面所说的更有意义的输出了。仅供参考,这是在运行 CentOS 5 的服务器上,有问题的站点都是 PHP。

php shell bash centos

1
推荐指数
1
解决办法
233
查看次数

你怎么能看到你放在后台的进程?

这个问题是基于这个线程

你怎么能看到你放在后台的进程?

linux unix shell background

1
推荐指数
1
解决办法
252
查看次数

ssh 中类似 Bash 的命令替换或如何从 ssh *client* 请求东西?

在 bash(和其他 shell)中,可以使用 $() 和 ``(反引号)之类的东西将命令的结果插入到命令行中。

现在,如果您有类似的东西,但对于 ssh 会话,那就太好了。因此,您处于 ssh 会话中,需要来自您自己计算机的一些信息,并希望将其放入您所连接计算机的内部命令行中。

例如,假设您想直接访问 mysql 控制台。你可以使用这样的命令:

ssh user@example.com "mysql -u blub -pmypass"
Run Code Online (Sandbox Code Playgroud)

这可行,但问题是,您可以在 ssh shell 进程的命令行中看到密码。

为了解决这个安全问题,我想要这样的东西:

ssh user@example.com "mysql -u blub -p\$(ssh-on-client 'cat pass-file')"
Run Code Online (Sandbox Code Playgroud)

它将cat passfile在 ssh 客户端而不是服务器上执行。有这样的事情吗?你有什么其他技巧可以做到这一点吗?

更新:我感谢参考我的例子的答案,但除非他们回答真正的问题,否则我不会接受它们。也就是说,是否可以从 ssh 会话内与 ssh 客户端计算机进行通信。(我知道这可能构成一个可能的安全问题)

可能的解决方案:

  • 在客户端上有一个 ssh 服务器可以连接回。(sweimann) 问题是如何获取连接回服务器的凭据。
  • 使用 ssh 创建隧道并使用一些 netcat 脚本/telnet 在服务器上执行命令并将结果发回。
  • 使用 expect 编写 shell 脚本。(扎克·汤普森)
  • 在客户端上使用围绕 ssh 的自定义包装器观察控制台并相应地采取行动。(札幌)
  • 修补 SSH 以支持这一点。邮件列表上有类似的补丁可用
  • ssh有一个选项“SendEnv”,用于在远程计算机上设置环境变量。不过,这必须在远程 sshd 上启用。

ssh shell bash

1
推荐指数
1
解决办法
5983
查看次数

如何发现当前时区(FreeNAS shell)?

如何找到当前对我的系统有效的时区并对其进行偏移?

我需要这些信息来抵消一些时间计算,但由于夏令时(这有效地改变了偏移量),我无法使其保持恒定。

例如,目前我的时区偏移量是 +02:00,而在冬季则是 +01:00。我需要得到它是哪一个,并以小时为单位进行抵消(例如,在这种情况下,答案应该是 2)。

我需要在 tcsh 或 bash 中执行此操作。

从命令行看起来时区没有设置(日期“+%z”返回 0)。但是,从 Web 界面时区设置为 Europe/Zagreb。我想抵消那个时区。

FreeNAS 的版本是 0.7 RC1。

freebsd shell freenas timezone

1
推荐指数
1
解决办法
1万
查看次数

如何从当前日期作为文件名的脚本自动生成文件?

我有一些生成一些输出的 shell 脚本。输出被写入文件。在我的 cronjob 中,我有它: ./myscript.sh --options > output 因为 cronjob 每周运行一次,我想保留一个输出列表,而不是在每次脚本运行时覆盖它们。所以理想情况下,我希望输出文件名作为 output_ date。日期是当前脚本运行日期。在 Unix 中,date 命令可以为您提供当前日期信息,但我如何将其集成到输出文件名中?

更新:

尝试过 Heath 和 wfaulk 的方法,效果很好。但是,当我在 cronjob 中放置相同的命令时,我开始收到错误消息:/bin/sh: -c: line 0: 在寻找匹配的 `)' 时出现意外 EOF /bin/sh: -c: line 1: 语法错误:意外的文件结尾

我知道这是由输出到名为 output_$(date +%Y%m%d) 的文件引起的,因为这是我所做的唯一更改。在cronjob中有不同的方法吗?

unix shell

1
推荐指数
1
解决办法
2218
查看次数

在 *nix 中运行 shell 脚本

一个使用 *nix 的新手(我实际上在 OS X 10.5 中使用了 bash shell),我想知道这个可能非常简单的答案是什么......

当我编写一个脚本(称为 my_script)并将其保存到当前目录时,为什么我必须在其名称前放置一个句点和一个正斜杠才能运行它?像这样:

./my_script

shell 不能告诉我要从当前目录运行它吗?Windows 似乎可以处理这种情况。

干杯本

scripting shell

1
推荐指数
1
解决办法
179
查看次数

ls -m 有更多信息吗?

我需要以一种可以解析为 json 的方式存储目录信息。

当我做 ls -m 它给我逗号分隔值但没有用户/组/大小信息。

bash-3.2$ ls -mp
100CANON/, 2009-11-27_1540.swf, 2009-11-27_1546.swf, 2009-11-27_1551.swf, 2009-11-30_0149.png, 429355_1.sql,
429355_1.sql.zip, About Stacks.pdf, Acrobat.com.app/
Run Code Online (Sandbox Code Playgroud)

ls -l 解析有问题。

无论如何你知道我可以得到 ls -l 信息作为逗号(或任何东西)分隔值吗?

shell

1
推荐指数
1
解决办法
191
查看次数

拿这个,做那个

我不知道如何写标题。

我需要输出,例如:

[~]# cat file
user1
domain1.com
user2
domain2.com
user3
domain3.com
Run Code Online (Sandbox Code Playgroud)

并将其转换为输出,例如:

user1 domain1.com
user2 domain2.com
user3 domain3.com
Run Code Online (Sandbox Code Playgroud)

这里的任何帮助将不胜感激。

linux shell sed

1
推荐指数
1
解决办法
97
查看次数

如果我 apt-get install ksh 是替换默认 shell 还是仅将其安装为解释器?

我收到错误:bash: ./fw_utils: /bin/ksh: bad interpreter: No such file or directory

如果我 apt-get install ksh 是替换默认显示还是仅将其安装为解释器?

如果它确实将其安装为默认值,我该如何将默认值切换回 bash?

shell bash apt

1
推荐指数
1
解决办法
372
查看次数

标签 统计

shell ×10

bash ×3

linux ×2

ssh ×2

unix ×2

apt ×1

background ×1

centos ×1

freebsd ×1

freenas ×1

php ×1

scripting ×1

sed ×1

timezone ×1

tunneling ×1