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
非対話型に強制)