Ssh
如何通過 scp 或 sftp 將遠端文件通過管道傳輸到標準輸出?
使用 ssh,很容易列印文件的內容
ssh host 'cat file.txt'
禁用 ssh 且僅啟用 SFTP 時,執行前面的命令會出現以下錯誤:
此服務僅允許 sftp 連接。
為了解決這個問題,我可以使用
scp
or創建一個臨時文件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