【问题标题】:Running command after SSH forced commandSSH强制命令后运行命令
【发布时间】:2017-11-16 22:52:23
【问题描述】:

我将我的 Raspberry Pi SSH 服务器配置为仅在登录时接受 ssh 密钥。我认为真的很聪明,直到现在。

问题是,我已经为 authorized_keys 添加了一个这样的键的强制命令:

command="cd /home/pi/Sites/" ssh-rsa [bla bla bla] [my comment]

现在尝试登录时,它只是说

与 MYSITE 的连接已关闭。

我认为强制命令正在运行,之后没有启动交互式 shell,因此连接被关闭。有什么方法可以连接并撤消我对authorized_keys-file 所做的更改?

【问题讨论】:

  • 最简单的方法可能是从 Pi 中取出 SD 卡,将其挂载到某个位置并更改该文件。
  • 你把自己锁在外面了吗?你没有另一把钥匙?还是您确实有另一个,但想知道如果您没有,您将如何继续...
  • Pi 位于远程位置,因此我无法访问 SD 卡。是的,你真的可以说我把自己锁在外面了。我在这台特定的计算机上没有任何其他密钥,并且具有其他密钥的另一台计算机很远......:p

标签: ssh


【解决方案1】:

我认为强制命令正在运行,之后没有启动交互式 shell,因此连接被关闭。

没错。

有什么方法可以连接并撤消我对授权密钥文件所做的更改?

没有。这是一个特点。如果您能够覆盖它,它将绕过您定义的安全策略(嗯......这完全没有多大意义)。

如前所述,如果您没有不同的授权密钥、不同的用户拥有授权密钥或密码,您将不得不到达远程位置并在 SD 卡上物理修改该文件。

下次如果你想cd到某个目录并启动交互式bash,你需要

command="cd /tmp/;bash" s

【讨论】:

  • 谢谢!当我在 ssh.com 上阅读有关强制命令的文档时,我最终相信了这一点。如果我只是想让强制命令重定向到我选择的目录,然后像往常一样启动交互式 shell,那么方法是将 ; bash 附加到命令中?