我的服务器上有一个特殊用户,我们称之为foo
。我仅将其用于端口转发。
用户.ssh/authorized_keys2
设置为阻止登录并仅打开特定端口:
no-pty,no-X11-forwarding,permitopen="localhost:4000",\
command="/bin/echo do-not-send-commands" ssh-rsa <long public key> bar@foobar
此外,它foo
的 shell 设置为/bin/false
in /etc/passwd
。
我无法登录机器(这就是我想要的):
$ ssh foo@remote
PTY allocation request failed on channel 0
Connection to remote closed.
但我可以打开端口。有趣的是,我可以打开端口 4000,但也可以打开其他非特权端口:
$ ssh -N -R 4001:localhost:22 foo@remote
> # connection established
在remote
user 上bar
,我可以连接:
$ ssh -p4001 bar@localhost
bar@localhost's password:
Last login: Fri Sep 26 09:23:45 2014 from localhost.localdomain
...
为什么用户可以
foo
打开端口 4001,而我将其限制为permitopen="localhost:4000"
?
答案1
啊,重读一下手册就知道原因了:
permitopen="host:port"
Limit local ``ssh -L'' port forwarding....
在 U&L 问答中还提到了以下标题:如何限制ssh偏僻的转发端口?。