Unix Shell/SSH 配置允许 TCP 端口转发而不显示命令提示符

Rap*_*l K 2 linux debian ssh port-forwarding

我正在运行 Debian Linux。我想有一个能够通过SSH连接的TCP转发的用户帐户,无提示的命令。

例如以下将工作(从远程计算机):

ssh -D1234 user@myhost
Run Code Online (Sandbox Code Playgroud)

但不会出现命令提示符。

使用像 /bin/false 或 /sbin/nologin 这样的 shell 限制太多,因为它甚至不允许用户登录。只允许“exit”或 Ctrl+D 命令的 shell 可以完成这项工作。

我知道类似的东西可能只允许 SFTP,但我找不到 TCP 转发的等价物。

谢谢

tyl*_*erl 5

听起来您正在寻找以下-N选项:

-N      Do not execute a remote command.  This is useful 
        for just forwarding ports (protocol version 2 only).
Run Code Online (Sandbox Code Playgroud)

像这样:

ssh -D 8080 -N foo@bar.com
Run Code Online (Sandbox Code Playgroud)

还有一些有趣的-f选择可能是:

 -f      Requests ssh to go to background just before command execution.  
         This is useful if ssh is going to ask for passwords or passphrases, 
         but the user wants it in the background.  This implies -n. 
         The recommended way to start X11 programs at a remote site is 
         with something like ssh -f host xterm.
Run Code Online (Sandbox Code Playgroud)

如果要限制入站连接可以:

  • 在您的authorized_keys文件中设置自定义命令(假设您使用的是 ssh 密钥)
  • 更改用户的外壳

您使用的命令/shell 取决于您想要允许的内容。例如:

  • /bin/cat 将保持连接打开但绝对不做任何事情
  • rssh 将允许您自定义可用的操作
  • chroot jailed shell 将提供类似的可定制性
  • bash可以在受限模式 ( rbash)下运行,该模式只允许您在配置的PATH. 这不是万无一失的,但它比没有更有价值。