隐藏 ps 命令中的参数

7
我希望我的ssh命令对其他用户保持隐藏/伪装。
例如:
ssh user@host -i /my/private/key

很不幸,这将在ps列表中显示,并且其他用户将能够看到我正在使用的私钥文件。有没有什么办法可以解决这个问题?(他们以与我相同的用户登录)

4
观察:如果你不想分享相同的秘密,就不应该共用相同的登录ID。用户ID是为个人设计的,而不是为群体设计的。 - Jonathan Leffler
7个回答

12
如果他们已经以你的身份登录,基本上你无法阻止他们获得这些信息。如果你在Linux上,他们可以访问你的/proc条目并轻松获得这些信息。
他们还可以:
  • 删除你的所有文件。
  • 冒充你的名义发送邮件侮辱你公司的CEO。
  • 访问你的所有文件和命令行历史记录(如果有的话)。
  • 进行其他种种操作。
这不是一个可行的保护方法。你需要先解决相同用户的问题。

3
在Linux上,你可以像这样做:
strncpy(argv[0], "mynewcmdlinehere", strlen(argv[0]));

抱歉,我不了解其他的Unix系统。


不知道这个。太容易了。谢谢! - Jorge Fuentes González
我在Linux上尝试了这个,但是ps仍然显示“a.out”。我错过了什么吗? - hek2mgl

3
隐藏命令行需要使用脚本,因此这是一个进退两难的情况,因为其他拥有相同用户的人将可以访问该脚本。
解决方案很简单:使用带有密码短语的密钥。 (教程)

4
即使使用带有密码短语的密钥,作为相同用户运行的另一个进程仍然可以读取您的 ssh-agent 或 ssh 进程中的密码短语和/或解密密钥。在运行相同 uid 的进程之间不存在安全性保障。 - ephemient

2
即使隐藏命令行,用户仍然可以运行lsof来查看您的ssh进程打开的所有文件,这将包括标识文件。 如果模糊命令行确实是最终目标,那么您可以启动一个密钥代理,将身份加载到代理中,然后使用该代理进行ssh。代理使用的套接字路径由环境变量控制。
但这绝不是安全的。Pax是正确的 - “以相同用户身份登录”的问题是真正应该解决的问题。停止使用他人的账户。 ;)

0
不允许他们知道私钥文件的位置并不是很安全 - 他们本来就不应该有读取权限,所以他们知道它在哪里并不重要。一般来说,如果您控制应用程序的源代码,您可以覆盖保存命令行参数的内存位置,因此您可以将它们修改为“无害”的内容。

0

从我的记忆深处,我记得很久以前做过类似的事情

首先,创建一个名为ps的shell脚本,运行ps并将除了包含ssh(或匹配内容)的所有行都grep出来,并将其放在安全位置(~/bin/ps)

将~/bin/添加到您的路径中作为第一个搜索位置。

当然,他们仍然可以明确地使用/usr/bin/ps(或其位置在哪里)

顺便说一句,这些都是从记忆中得出的,我没有Unix盒子来测试它...抱歉


这并没有防止其他“用户”(由于未知的坏原因而使用相同uid的用户)直接使用原始的“ps” - 也无法防止。 - ephemient

-1

您可以通过您的 ~/.ssh/config 文件设置您的私钥,该文件由 0700 保护。

以下是 ~/.ssh/config 的示例:

Host myhost.com
  IdentityFile /home/maxcohan/.ssh/github.com.id_rsa

1
他说每个人都使用相同的用户帐户。chmod 不起作用。 - ahmet alp balkan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接