HTTPS 파일로 응답하는 SFTP 서버

HTTPS 파일로 응답하는 SFTP 서버

HTTPS를 통한 REST-API 서버가 있습니다. SFTP를 사용하여 파일을 검색할 때 API를 호출하는 방법이 필요합니다. 콘텐츠는 요청마다 동적으로 생성됩니다. 사용자 계정을 추가하고 서버에 보안 허점을 도입하지 않고도 이를 수행할 수 있는 간단한 방법이 있습니까? 키가 있으면 누구나 파일의 내용을 얻을 수 있지만 그 외에는 얻을 수 없습니다.

이것이 내가 가진 것입니다:

GET https://myservice/api/items/get?key=XXXX

이렇게 하면 동일한 결과가 반환됩니다.

sftp XXXX@myservice:/items (or sftp myservice:/items/XXXX)

답변1

생각하다네가 무슨 말을 하려는지 알 겠어. 현재 사용자(또는 요청한 파일)를 기반으로 파일을 생성하려고 합니다. 현재는 HTTPS를 통해 수행하고 있지만 SFTP를 통해서도 사용할 수 있게 만들고 싶습니다. 그렇죠? 흥미로운 문제입니다.

당신이 요청한 것을 즉시 수행할 수 있는 것이 아무것도 없다고 생각한다는 말을 들으면 충격을 받을 수도 있습니다.... 하지만 무엇이든 가능합니다.


나의 첫 번째 접근 방식은 자신만의 파일 시스템을 작성하는 것입니다!

FUSE부터 시작하겠습니다. 게다가 파이썬 퓨즈. 여기내가 사용한 유일한 튜토리얼퓨즈용. 편집을 시작할 수 있는 지점으로 이동하게 됩니다. 나는:

  • 하나의 [가짜] 파일만 나열하도록 하세요.readdir()
  • 파일 시스템에서 사용자 이름을 찾는 방법을 알아보세요.
  • Hotwire open()및 사용자 이름을 사용하여 read()끌어옵니다 requests.get('your URL'). open()위조하고 요청 read()을 처리 해야 할 수도 있습니다 requests.
  • 데이터를 반환하도록 다른 많은 메소드를 패치하고 더미화해야 할 수도 있지만 대부분의 경우 가짜일 것입니다.
  • 모두가 읽기 전용으로 볼 수 있도록 SFTP 어딘가에 이 FUSE 파일 시스템을 마운트하세요.

이는 SFTP 접근 방식 중 하나에서 작동하지만(예를 들어 사용자 대신 전체 경로를 볼 수 있음) 사람들이 로그인할 수 있는 단일 SFTP 계정이 필요합니다.


또는 모든 사용자에게 계정이 있는 경우 각 사용자가 소유한 디렉터리에 대한 액세스를 모니터링할 수 있습니다. 디렉토리에 대한 액세스를 감시할 수 있습니다 inotifywatch.inotifywait

inotifywait -mrq --format '%w' /home/*/magicdir/ | while read DIR; do
    user=${DIR:6:-10}  # that is based on the length of /home/ and /magicdir/
    wget -qO $DIR https://path/to/items/${user}
done

그리고 백그라운드 어딘가에 실행되도록 두세요. 디렉터리에 액세스할 때마다 웹사이트에서 파일이 업데이트됩니다. echo blaaa $DIR서버를 망치지 않는지 확인하기 위해 (를 사용하여) 확인하고 싶을 수도 있습니다 . 디렉터리를 처음 로드할 때 파일이 표시되지 않을 수 있습니다.

관련 정보