web-dev-qa-db-fra.com

Comment pipe un fichier distant à STDOUT sur SCP ou SFTP?

Utilisation de SSH, il est facile d'imprimer le contenu d'un fichier en utilisant

ssh Host 'cat file.txt'

Lorsque SSH est désactivé, et uniquement SFTP est activé, l'exécution de la commande précédente donne l'erreur suivante:

Ce service permet uniquement aux connexions SFTP.

Pour contourner ce problème, je pourrais créer un fichier temporaire à l'aide de scp ou sshfs (comme indiqué ci-dessous), mais cela semble vraiment laid. Quelle est la bonne façon d'imprimer le contenu d'un fichier distant lorsque SSH est désactivé?

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 peut afficher le fichier de la même manière que le chat serait. Pas besoin de supprimer le fichier car il a simplement affiché la sortie à moins que vous le disiez autrement.

curl -u username:password sftp://hostname/path/to/file.txt

Si vous utilisez l'authentification de clé publique:

curl -u username: --key ~/.ssh/id_rsa --pubkey sftp://hostname/path/to/file.txt

Si vous utilisez les emplacements par défaut, alors --key et --pubkey peut être omis:

curl -u username: sftp://hostname/path/to/file.txt

Le nom d'utilisateur peut également faire partie de l'URL. Le résultat final semble donc très proche de la commande SSH:

curl sftp://username@hostname/path/to/file.txt
15
brwtx

Pour les personnes qui peuvent courir scp, vous pouvez le faire:

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