sshはリモートポート転送を制限せずにpermitopen = "localhost:4000"を設定します。

sshはリモートポート転送を制限せずにpermitopen = "localhost:4000"を設定します。

私のサーバーに特別なユーザーがいます。これをと呼びます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

また、対応するシェルは infooに設定されます。/bin/false/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ユーザーは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 Q&Aでも以下のタイトルが挙げられています。SSHを制限する方法離れてフォワードポート?

関連情報