可以使用nologin用户通过ssh执行命令吗?


13

如果用户有loginShell=/sbin/nologin,仍然可以

ssh user@machine [command]

假设用户在其主目录中具有正确的ssh密钥,可以用来进行身份验证?

我的目标是让用户保持登录状态,但仍然能够在网络上的其他几台计算机上执行命令(类似于通过“ sudo -u”使用它),并且想知道这是否合理。


1
它应该工作。该command运行代替的登录shell。
Orion

1
这违反了配置/sbin/nologin为外壳的目的。如果您担心帐户的安全性,则禁用密码身份验证并使用ssh密钥就足够了。
Creek

@Creek登录外壳程序和其他外壳程序实例之间有区别。因此,他的要求并不一定会破坏/ sbin / nologin的目的。可能他想在登录Shell上下文之外执行某些工作。
Michael Martinez

7
@orion错误。该命令登录外壳执行。
吉尔(Gilles)'所以

@MichaelMartinez在他的示例上下文中,如果用户的外壳为shell,/sbin/nologin则用户将无法在计算机上登录或执行命令。可以作为用户运行cronjobs并sftp可以将其配置为打开会话,但是不会通过ssh打开shell
Creek

Answers:


17

设置/sbin/nologin为用户的壳(或/bin/false/bin/true,这是几乎等同)禁止从登录到任何运行任何命令的用户。SSH总是调用用户的登录Shell来运行命令,因此您需要将登录Shell设置为能够运行某些命令的外壳。

有几个受限制的外壳程序,它们使用户只能运行一些命令。例如RSSHscponly都是这样壳,其允许用户运行几个预定义的命令(例如scpsftp-serverrsync,...)。另请参见限制Linux中的用户访问权限SCP是否需要外壳?


谢谢,我最终辞职了,给该帐户一个登录Shell,以便它可以运行远程命令。更好的解决方案可能是作为当前用户使用ssh并为ssh命令调用sudo -u,但这在我的情况下并不完全适用。
Centimane 2015年

1

似乎答案是否定的。

ssh user@machine [command]

使用ssh键仅会导致:

This account is currently not available

而不是执行命令,似乎我必须给它访问bash的权限。


-4

我不知道这是否可行(虽然应该很容易测试),但是有一个功能可以以某种方式回答您的问题,无论如何都可以解决您的问题。

您可以在中向关键行添加命令authorized_keys。在这种情况下,将执行此命令。我认为这与之有效,/sbin/nologin因为无论如何应该忽略外壳。

但是对于允许的每个命令,您将需要一个不同的键。


不幸的是,我需要的解决方案必须比这更灵活
Centimane 2015年

如果易于测试,则应在编写答案之前对其进行测试。
Michael Martinez

@MichaelMartinez在提问之前,进行简单的测试是发问者的任务。不难看出没有回答问题而是提出了引起问题的问题的建议。这非常适合作为答案。拒绝投票只是愚蠢的。如果没有第一段,您是否会批评答案?究竟。
Hauke Laging,2015年

3
中的命令authorized_keys是由登录外壳执行的,所以不行,这是行不通的(如果没有其他非平凡的配置,就无法运行)。(如何错误地回答“愚蠢”的答案?请尊重他人。)
吉尔斯(Gills
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.