scp 또는 sftp를 통해 원격 파일을 stdout으로 전송하는 방법은 무엇입니까?

scp 또는 sftp를 통해 원격 파일을 stdout으로 전송하는 방법은 무엇입니까?

SSH를 사용하면 파일 내용을 쉽게 인쇄할 수 있습니다.

ssh host 'cat file.txt'

SSH가 비활성화되고 SFTP만 활성화된 경우 이전 명령을 실행하면 다음 오류가 발생합니다.

이 서비스는 SFTP 연결만 허용합니다.

이 문제를 해결하기 위해 scp또는(아래 참조)을 사용하여 임시 파일을 만들 수 있지만 sshfs이는 매우 보기 흉합니다. SSH가 비활성화된 경우 원격 파일의 내용을 인쇄하는 올바른 방법은 무엇입니까?

mkdir tmpdir
sshfs host: tmpdir
cat tmpdir/file.txt
fusermount -u tmpdir

# This does not work! scp -v host:file.txt . shows
# "Sink: This service allows sftp connections only."
scp host:file.txt .
cat file.txt
rm file.txt

답변1

을(를) 실행할 수 있는 사용자는 scp다음을 수행할 수 있습니다.

scp remotehost:/path/to/remote/file /dev/stdout

답변2

Curl은 cat과 같은 파일을 표시할 수 있습니다. 달리 지정하지 않는 한 파일은 출력만 표시하므로 파일을 삭제할 필요가 없습니다.

curl -u username:password sftp://hostname/path/to/file.txt

공개 키 인증을 사용하는 경우:

curl -u username: --key ~/.ssh/id_rsa --pubkey sftp://hostname/path/to/file.txt

기본 위치를 사용하는 경우 --key--pubkey생략 가능:

curl -u username: sftp://hostname/path/to/file.txt

사용자 이름은 URL의 일부일 수도 있으므로 최종 결과는 ssh 명령과 매우 유사해 보입니다.

curl sftp://username@hostname/path/to/file.txt

답변3

Ubuntu에서는 파일 GUI에서 원격 디렉터리를 연 다음 "로컬 터미널에서 열기"를 할 수 있습니다.

이 시점에서 나는 다음과 같은 흥미로운 경로로 이동하고 있습니다./run/user/1000/gvfs/sftp:host=qweqwe.synology.me/Prod_Backup/DB

여기에서 로컬 파일 시스템과 유사한 파일을 읽고 전송할 수 있습니다.

불행하게도 속도는 내 요구 사항(~200KB/s)에 충분하지 않습니다.

답변4

그리고 lftp:

lftp -e 'set cmd:show-status 0; cat -b remote/file' sftp://user@host < /dev/null

( </dev/null비대화형으로 강제)

관련 정보