使用 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
答案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
从那里我可以读取和传输类似于本地文件系统的文件。
不幸的是,速度不足以满足我的需求(~200 KB/s)。
答案4
和lftp
:
lftp -e 'set cmd:show-status 0; cat -b remote/file' sftp://user@host < /dev/null
(</dev/null
强制其非交互式)。