我创建了一个 linux 用户并将其默认 shell 更改为/bin/true
.我想允许该用户通过 SSH 设置端口转发,但不在服务器上执行任何操作。
我怎样才能做到这一点?
答案1
通过将用户的 shell 设置为/bin/true
,您已经阻止了用户在服务器上执行任何操作。问题是,如果用户通过“正常”连接到服务器ssh
,输入密码后他/她会立即断开连接,因此也无法使用端口转发。
您的用户应该使用-N
参数 to ssh
,如下所示:
ssh -N -L 8000:localhost:80 youruser@yourserver
这会创建从用户连接的计算机的端口 8000 到服务器上的端口 80 的端口转发。该-N
参数指示ssh
仅建立连接,但要不是执行用户的默认 shell(/bin/true
在您的情况下)。因此,用户保持连接并且连接将“挂起”,直到被 Ctrl-C 中断。在此期间,端口将被转发。
您还可以通过添加beforessh
来在“挂起”之前转到后台(因此终端不会被阻止)。在这种情况下,稍后要退出端口转发,就必须在进程列表中找到该进程并将其杀死。-f
-N
ssh