SSH: 원격 포트 전달. - 권한 있는 포트 바인딩

SSH: 원격 포트 전달. - 권한 있는 포트 바인딩

매우 짧고 기본적인 질문입니다. 웹 과제에 문제가 있습니다. 이것이 제가 구현하도록 요청받은 것입니다.

  • pc1의 포트 83을 s1의 포트 8000으로 리디렉션하도록 SSH 원격 포트 전달을 구성합니다.

이를 위해 나는 간단한 것을 사용했습니다.

s1:~# ssh -o StrictHostKeyChecking=no -NR 83:127.0.0.1:8000 [email protected] &

여기서 10.0.1.2는 pc1의 IP이지만 경고가 반환될 때마다 다음과 같습니다.

경고: 포트 83에서 수신 대기하는 원격 포트 전달이 실패했습니다.

이미 83을 사용하는 실행 중인 프로그램이 없습니다. 로컬로(pc1에서) 포트 83을 수신하려고 하면 이 작업도 쉽게 수행할 수 있습니다.

참고: 바인딩하려고 하는 모든 권한 있는 포트에서 이 오류가 발생합니다.

답변1

1024 아래의 포트를 바인딩하려면 루트 권한이 있거나 CAP_NET_BIND_SERVICE. 이를 얻으려면 다음을 실행하십시오.

 sudo -E -- setpriv --inh-caps +net_bind_service --ambient-caps +net_bind_service --reuid $USERNAME /bin/bash

이렇게 하면 유틸리티가 루트로 실행되고 setpriv사용자의 유틸리티로 다시 전환되지만 기능이 uid추가됩니다 CAP_NET_BIND_SERVICE.

답변2

ssh_user 대신 1024 미만의 포트를 리디렉션하려면 pc1(일명 10.0.1.2)에서 루트여야 합니다.

pc1에 로그인한 경우(아마 루트로) 포트 83을 바인딩할 수 있으므로 pc1에서 부팅하고 SSH를 통해 s1에 액세스하는 것이 더 쉬울 수 있습니다. 포트 83을 로컬로 바인딩하려면 "-R" 대신 "-L"을 사용하세요.

관련 정보