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

또한 해당 쉘은 in foo으로 설정됩니다 ./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를 제한하는 방법외딴포워드 포트?.

관련 정보