Come reindirizzare un file remoto su stdout su scp o sftp?


28

Usando ssh, è facile stampare il contenuto di un file usando

ssh host 'cat file.txt'

Quando ssh è disabilitato e è abilitato solo SFTP, l'esecuzione del comando precedente genera il seguente errore:

Questo servizio consente solo connessioni sftp.

Per aggirare questo problema, potrei creare un file temporaneo usando scpo sshfs(come mostrato sotto), ma sembra davvero brutto. Qual è il modo corretto di stampare il contenuto di un file remoto quando SSH è disabilitato?

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

Risposte:


14

Curl può visualizzare il file nello stesso modo in cui lo farebbe cat. Non è necessario eliminare il file poiché ha semplicemente visualizzato l'output, a meno che non venga indicato diversamente.

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

Se si utilizza l'autenticazione con chiave pubblica:

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

Se si utilizzano le posizioni predefinite, quindi --keye --pubkeypossono essere omesse:

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

Il nome utente può anche essere una parte dell'URL, quindi il risultato finale è molto vicino al comando ssh:

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

Grazie, esattamente quello che stavo cercando! Ho modificato la tua risposta per espandere l'autenticazione a chiave pubblica, si scopre che la sintassi è molto simile alla sintassi ssh / sshfs. Se il comando curl non riesce con "curl: (51) il certificato peer SSL o la chiave remota SSH non erano corretti", basta aggiungere il -kflag ( --insecure).
Rob W,

28

Per le persone che possono correre scp, puoi farlo:

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

Nessuno dei due metodi funziona. Il primo è equivalente al one-liner sftp username@hostname:/path/to/file.txt /dev/stdoute risulta in "Impossibile scrivere su" / dev / stdout ": Ricerca illegale". Il secondo comando ha esito negativo e mostra l'errore mostrato nella parte inferiore della mia domanda.
Rob W,

Il modulo SFTP funziona bene per me. Potrebbe dipendere dalla versione del software ssh in uso. Per quanto riguarda scp, ho detto "se scp funziona". Hai stabilito nella tua domanda che il server non ti consentiva di eseguire scp, quindi naturalmente il comando scp non avrebbe funzionato per te.
Kenster,

ssh -VOpenSSH_6.6.1p1, OpenSSL 1.0.1h 5 Jun 2014. scp fallisce perché usa ssh sotto il cofano e ssh è disabilitato (come misura di sicurezza, vedi ad esempio serverfault.com/questions/354615/allow-sftp-but-disallow-ssh )
Rob W
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.