Uzak bir dosya scp veya sftp üzerinden stdout'a nasıl yönlendirilir?


28

Ssh kullanarak, bir dosyanın içeriğini kullanarak yazdırmak kolaydır.

ssh host 'cat file.txt'

Ssh devre dışı bırakıldığında ve yalnızca SFTP etkinleştirildiğinde, önceki komutu çalıştırmak aşağıdaki hatayı verir:

Bu servis sadece sftp bağlantılarına izin verir.

Bu soruna geçici bir çözüm bulmak için, scpveya kullanarak sshfs(aşağıda gösterildiği gibi) geçici bir dosya oluşturabilirim , ancak bu gerçekten çirkin görünüyor. SSH devre dışı bırakıldığında uzak bir dosyanın içeriğini yazdırmanın doğru yolu nedir?

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

Yanıtlar:


14

Curl, dosyayı kediyle aynı şekilde görüntüleyebilir. Dosyayı silmenize gerek yok, aksi takdirde yapmayı söylemediğiniz sürece çıktıyı gösterdiği için.

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

Genel anahtar kimlik doğrulaması kullanıyorsanız:

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

Varsayılan konumları kullanıyorsanız, o zaman --keyve --pubkeyatlanabilir:

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

Kullanıcı adı aynı zamanda URL’nin bir parçası olabilir, bu nedenle nihai sonuç ssh komutuna çok yakın görünür:

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

Teşekkürler, tam olarak aradığım şey! Açık anahtar kimlik doğrulaması üzerinde genişlemek için cevabınızı düzenledik, sözdiziminin ssh / sshfs sözdizimine çok benzer olduğu ortaya çıktı. Curl komutu "curl: (51) SSL eş sertifikası veya SSH uzaktan kumanda anahtarı" ile başarısız olursa, sadece -k( --insecure) işaretini ekleyin .
Rob W

28

Kaçabilecek insanlar için şunu yapabilirsiniz scp:

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

Her iki yöntem de işe yaramaz. Birincisi, bir linere eşdeğerdir sftp username@hostname:/path/to/file.txt /dev/stdoutve "/ dev / stdout" yazamadı ": Yasadışı arama" ile sonuçlanır. İkinci komut başarısız olur ve sorumun altında gösterilen hatayı gösterir.
Rob W

SFTP formu benim için iyi çalışıyor. Kullanmakta olduğunuz ssh yazılımının hangi sürümüne bağlı olabilir. Scp ile ilgili olarak "Eğer scp işe yararsa" dedim. Sorunuzda sunucunun scp gerçekleştirmenize izin vermediğini belirttiniz, bu nedenle doğal olarak scp komutu sizin için başarısız olacaktır.
Kenster

ssh -Vverir OpenSSH_6.6.1p1, OpenSSL 1.0.1h 5 Jun 2014. scp başlık altında ssh kullandığından ve ssh devre dışı kaldığından (güvenlik önlemi olarak bkz. serverfault.com/questions/354615/allow-sftp-but-disallow-ssh )
Rob W
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.