Ssh

如何通過 scp 或 sftp 將遠端文件通過管道傳輸到標準輸出?

  • March 10, 2018

使用 ssh,很容易列印文件的內容

ssh host 'cat file.txt'

禁用 ssh 且僅啟用 SFTP 時,執行前面的命令會出現以下錯誤:

此服務僅允許 sftp 連接。

為了解決這個問題,我可以使用scpor創建一個臨時文件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

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

對於可以跑步的人scp,您可以這樣做:

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

引用自:https://unix.stackexchange.com/questions/147023