루트 액세스가 필요한 원격 시스템에서 scp를 통해 파일 복사(원격 루트 액세스 비활성화)

루트 액세스가 필요한 원격 시스템에서 scp를 통해 파일 복사(원격 루트 액세스 비활성화)

저는 A 머신에 있고 A 에서 scp. 이 구성을 변경할 수 없습니다.rootrootssh

scpA에서 실행하는 root동안 B의 비밀번호를 묻지 않기 때문에 표준 문이 작동하지 않습니다.scp

어떡해?

답변1

sudoers내 상자에서 작동하게 할 수 있지만 옵션이 requiretty손상될지는 확실하지 않습니다 .

sudo컴퓨터 B에서 암호를 묻는 프로그램을 만듭니다. 예를 들어 /home/myname/askpass.sh, chmod그것은+x

#!/bin/bash
echo "my_password"

scp원격 명령에 대한 SSH 연결을 설정하고 관련 명령을 삽입 할 컴퓨터에 연결 스크립트를 만듭니다 . 예를 들어 sudo이렇게 부르세요 ../fakessh.shchmod+x

#!/bin/bash

oldargs=( $@ )

newargs=( )

while : ; do
  [ "${oldargs[0]}" == "scp" ] && break

  newargs+=( "${oldargs[0]}" )
  oldargs=( "${oldargs[@]:1}" )
done

newargs+=( 'export SUDO_ASKPASS=/home/myname/askpass.sh' \; exec sudo -A -- "${oldargs[@]}" )

exec ssh "${newargs[@]}"

위의 스크립트는 이것을 참조하므로 /home/myname/askpass.sh필요에 따라 경로를 업데이트하십시오.

이제는 scp거의 잘 작동합니다.

scp -S ./fakessh.sh user@hostname:/etc/shadow ./

이것은 나에게 효과적입니다. YMMV.

ncatsocat또는 같은 것을 실행하고 사용자 정의 수신 포트를 가리킬 수 있다면 sudo다른 해킹을 생각할 수 있지만 scp보안 관점에서 보면 어리석은 일이 됩니다.

관련 정보