Scp या sftp पर stdout करने के लिए रिमोट फाइल को कैसे पाइप करें?


28

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

जवाबों:


14

कर्ल फ़ाइल को उसी तरह प्रदर्शित कर सकता है जिस तरह से बिल्ली करेगी। फ़ाइल को हटाने की आवश्यकता नहीं है क्योंकि यह केवल आउटपुट प्रदर्शित करता है जब तक कि आप इसे अन्यथा करने के लिए नहीं कहते हैं।

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

धन्यवाद, वास्तव में मैं क्या देख रहा था! मैंने आपके उत्तर को सार्वजनिक-कुंजी प्रमाणीकरण पर विस्तारित करने के लिए संपादित किया है, यह पता चला है कि वाक्यविन्यास ssh / ssh / ssh वाक्यविन्यास के समान है। यदि कर्ल कमांड "कर्ल: (51) एसएसएल पीयर सर्टिफिकेट या एसएसएच रिमोट कुंजी ठीक नहीं था" के साथ विफल हो जाता है, तो केवल -kध्वज जोड़ें ( --insecure)।
रॉब डब्ल्यू

28

जो लोग दौड़ सकते हैं scp, उनके लिए आप यह कर सकते हैं:

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

न ही विधि काम करती है। पहला एक-लाइनर के बराबर है sftp username@hostname:/path/to/file.txt /dev/stdoutऔर "" / dev / stdout ": अवैध खोज" में नहीं लिख सकता है। दूसरा कमांड विफल रहता है, और मेरे प्रश्न के निचले भाग में दिखाई गई त्रुटि को दिखाता है।
रोब डब्ल्यू

SFTP फॉर्म मेरे लिए ठीक काम करता है। यह आपके द्वारा उपयोग किए जा रहे ssh सॉफ़्टवेयर के किस संस्करण पर निर्भर हो सकता है। Scp के बारे में, मैंने कहा कि "अगर scp काम करता है"। आपने अपने प्रश्न में स्थापित किया है कि सर्वर आपको scp प्रदर्शन करने की अनुमति नहीं दे रहा था, इसलिए स्वाभाविक रूप से आपके लिए scp कमांड विफल हो जाएगी।
केनस्टर

ssh -Vदेता है OpenSSH_6.6.1p1, OpenSSL 1.0.1h 5 Jun 2014। scp विफल हो जाता है क्योंकि यह हुड के नीचे ssh का उपयोग करता है, और ssh अक्षम है (सुरक्षा उपाय के रूप में, उदाहरण के लिए देखें serverfault.com/questions/354615/allow-sftp-but-disallow-ssh )
Rob W
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.