不调用 shell 的 SSH

不调用 shell 的 SSH

我弄乱了系统上的一些共享库,现在我的 shell 无法运行,因此我被锁定在系统之外。远程系统上配置的sshsftpscp似乎都依赖于 shell,因此这些替代方案不可行。实际上,这不是什么大问题,因为我有一些远程人员可以将我的 shell 更改为sh通过控制台。

然而我很好奇,深入了解 SSH 协议的机制,是否可以在/etc/passwd不调用 shell 的情况下对远程系统进行身份验证并执行某些操作(例如,修改)?

编辑

公平地说,对于建议指定替代命令/shell 的人ssh 命令字符串(例如ssh myhost /bin/sh):手册页状态:

If command is specified, it is executed on the remote host instead of a login shell.

这肯定会造成混淆。

答案1

[仅供参考——在撰写本文时,希望问题已经得到解决]

使用openssh,执行的任何命令都sshd可以通过您的登录 shell 执行,选项如下-c

  • 命令行中传递的命令ssh(即ssh user@host command
  • 文件中设置的命令.authorized_keys(即command="..." ssh-rsa AAAA...
  • ForceCommand由选项指定的命令sshd_config
  • 脚本的执行~/.ssh/rc(通过/bin/sh ~/.ssh/rc
  • 即使scp是响应远程命令而执行的本地服务器命令scp

因此,如果您的登录 shell 是伪造的(/bin/falsenologin)或损坏的,您就无法使用 远程执行任何操作ssh。这也是为什么没有替代 shell 的原因。

相关内容