web-dev-qa-db-ja.com

リモートファイルを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
29
Rob W

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
15
brwtx

scpを実行できる人のために、これを行うことができます:

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