不调用 shell 的 SSH

A__*_*__0 5 ssh shell protocol

我设法弄乱了系统上的一些共享库,现在我的 shell 无法运行,从而将我锁定在系统之外。在远程系统上配置的sshsftpscp似乎都依赖于 shell,因此这些替代方案已不再适用。确实,这不是一个大问题,因为我有一些远程手可以将我的 shell 更改为sh通过控制台。

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

编辑

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

If command is specified, it is executed on the remote host instead of a login shell.
Run Code Online (Sandbox Code Playgroud)

这肯定会令人困惑。

xhi*_*nne 4

[仅供记录——在撰写本文时,问题早已得到解决,希望]

使用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 的原因。