PDA

View Full Version : scaricare file tramite ssh


xnavigator
22-01-2008, 22:53
ragazzi è possiible con qualche comando scaricare dei file con ssh?

non posso utilizzare sftp con i dati di login di ssh perchè per ottenere i privilegi di root da ssh devo prima collegarmi come utente e poi applicare il comando su


grazie

diabolicus
23-01-2008, 09:41
scp ?

scp nomeutente@server:/path/nomefile

palmy
23-01-2008, 09:42
non credo che sia la soluzione più elegante o pratica, però il uso l'esportazione di display su ssh e cosi tramite file manager sposto o copio file con drag&drop.
Questo però implica che ci sia un server X attivo da entrambe le parti, il che potrebbe essere limitante.

orpheus
23-01-2008, 09:53
Non so se sia la cosa più giusta ma io mi collegherei in ssh con utente root ,mi copierei i file che mi interessano in una cartella, cambierei la proprietà dei file usando chown dandogli proprietà di un utente non root e poi poi userei scp per copiarli in remoto.

xnavigator
23-01-2008, 12:45
Non so se sia la cosa più giusta ma io mi collegherei in ssh con utente root ,mi copierei i file che mi interessano in una cartella, cambierei la proprietà dei file usando chown dandogli proprietà di un utente non root e poi poi userei scp per copiarli in remoto.

infatti devo fare per forza cosi attualmente ma è un processo troppo lungo
perciò chiedevo se ci fosse un comando diretto

Scoperchiatore
23-01-2008, 16:00
infatti devo fare per forza cosi attualmente ma è un processo troppo lungo
perciò chiedevo se ci fosse un comando diretto

Puoi fare scp dalla macchina server.


ssh utente@macchina
su -
scp /path xnavigator@tuo_pc:/path


non è comunque automatico

Per automatizzare totalmente, sempre ammesso che abbia capito, puoi procedere come segue. Hai bisogno di poter configurare sudo (visudo)

Crea un script, sulla macchina remota, seguendo questo esempio.
Questo è lo script, che io ho messo in /tmp/script.sh


cp -r "$1" /tmp/
chmod a+r -R "/tmp/`basename "$1"`"

Questo script fa due cose: copia una directory/file passato come parametro in /tmp/ e poi lo rende, ricorsivamente, accessibile a tutti.

Ricordati di renderlo eseguibile, e non alterabile da altri:

Da eseguire come root:

chown root:root /tmp/script.sh
chmod 0700 /tmp/script.sh
chmod a+x /tmp/script.sh


Rendi questo script eseguibile ad un utente tramite sudo e senza password.

Da eseguire come root:

visudo


ed aggiungi la seguente linea:

utente ALL=(ALL) NOPASSWD: /tmp/script.sh



A questo punto con la sequenza di comandi:


ssh utente@macchina_remota sudo /tmp/script.sh /etc/shadow
scp utente@macchina_remota:/tmp/shadow /path/su/macchina/locale


Il primo comando esegue lo script come superutente; dando come parametro /etc/shadow, copierà il file shadow presente in /etc/ nella cartella /tmp/ sempre del server
Il secondo parametro, quindi, copia questo nuovo file /tmp/shadow, in un path della tua macchina locale.

Per eseguire questi comandi devi, comunque, dare 2 volte la password dell'utente sulla macchina remota.

Puoi automatizzare anche questo installando putty, ed usando, invece di ssh, plink:


plink -p <password> utente@macchina_remota sudo /tmp/script.sh /etc/shadow
plink -p <password> utente@macchina_remota:/tmp/shadow /path/su/macchina/locale



Non mi vengono in mente soluzioni più semplici, mi spiace. Tra l'altro, nota che la variante con plink diminuisce pesantemente la sicurezza

xnavigator
23-01-2008, 16:08
Puoi fare scp dalla macchina server.


ssh utente@macchina
su -
scp /path xnavigator@tuo_pc:/path






grazie della risposta, intanto mi basta la prima soluzione se però capisco questo:
xnavigator@tuo_pc:/path

sarebbe nomeutentediwindows@nomedelpc:c:\dir

?

intatno ho provato a fare solo scp /tmp utente@pc e mi dice
do_local_cmd: fork: Cannot allocate memory

:muro:

Scoperchiatore
23-01-2008, 16:29
grazie della risposta, intanto mi basta la prima soluzione se però capisco questo:
xnavigator@tuo_pc:/path

sarebbe nomeutentediwindows@nomedelpc:c:\dir

?

intatno ho provato a fare solo scp /tmp utente@pc e mi dice
do_local_cmd: fork: Cannot allocate memory

:muro:

Ah, ok, perchè tu sul tuo PC hai Windows. Non lo tenevo in considerazione :D

Per realizzare lo scenario 1, devi installare su Windows un server ssh. Se ne trovano abbastanza in giro, ma non ti saprei dare supporto, purtroppo.

xnavigator
23-01-2008, 16:40
Ah, ok, perchè tu sul tuo PC hai Windows. Non lo tenevo in considerazione :D

Per realizzare lo scenario 1, devi installare su Windows un server ssh. Se ne trovano abbastanza in giro, ma non ti saprei dare supporto, purtroppo.

putty non va bene e :D

comunque secondo voi è poco sicuro poter autenticare direttamente root senza passare per "su"?

il mio provider ha detto che è sconsiglaito per una questioen ti brute force...
non si potrebbe disattivare il login da quella macchina dopo x tentativi falliti per esempio ...

---
qualcuno sa qual'è il comando per riavviare il server, dovrebbe essere qualcosa con sbin se non sbaglio(me l'hanno detto e l'ho dimenticato)

Scoperchiatore
24-01-2008, 10:50
putty non va bene e :D



No :D
Esiste qualcosa tipo SSH Secure Client, prova a scaricarlo, installarlo e cliccare su "avvia server". Potrebbe andare :D



comunque secondo voi è poco sicuro poter autenticare direttamente root senza passare per "su"?

il mio provider ha detto che è sconsiglaito per una questioen ti brute force...


Non è poco sicuro con password lunghe, dal punto di vista teorico.
Dal punto di vista pratico, ti consiglio una password di circa 15 caratteri, con maiuscole, minuscole e caratteri speciali, e nulla che sia ricondicibile a te. Se usi questo numero di caratteri puoi anche mettere parole di senso compiuto.Esempi

GioVannONA.C0sc1a@LunGA
RoXXoDaVaNt1.e.DietRO.Tu77I.4nt1
*C_nf-s@.*,.*F,lic,*

L'utima la ricavi da Confusa e Fecile sostituendo le vocali.

Hanno tutte degli schemi mentali minimi per ricostruirle. Sicuramente, una password di root con ssh attivo per root, non ti puoi permettere di scriverla da qualche parte, se ci tieni all'incolumità del tuo server, perchè spesso è così che le fregano.


non si potrebbe disattivare il login da quella macchina dopo x tentativi falliti per esempio ...


Si, probabilmente. Dovresti leggere le impostazioni relative a PAM (P? Authenticatio Module): ma è un bel rischio lockare root :D


qualcuno sa qual'è il comando per riavviare il server, dovrebbe essere qualcosa con sbin se non sbaglio(me l'hanno detto e l'ho dimenticato)

per fare reboot della macchina
/sbin/reboot
/sbin/poweroff -r now

per riavviare soltanto il server ssh
/etc/init.d/sshd restart

oppure

/etc/init.d/ssh restart


il tutto da root

diabolicus
24-01-2008, 11:39
Si, probabilmente. Dovresti leggere le impostazioni relative a PAM (P? Authenticatio Module)

Pluggable ;)
potresti anche usare l'autenticazione con chiave pubblica/privata per aumentare la sicurezza (la pwd in questo caso è la passphrase della chiave, non la pwd utente. puoi anche settare un pwd vuota e fare il login diretto - comodo per scriptare connessioni al server. ovviamente se lo fai come root chiunque dovesse entrare in possesso della tua chiave privata avrebbe pieno accesso al server :eek: ). se digitare la pass non è un problema, la soluzione chiave+passphrase potrebbe fare al caso tuo.. diciamo che è ragionevolmente sicura. per la passphrase valgono gli stessi consigli di Scoperchiatore per la password di sistema.
e cmq il login come root è da tenere come ultima spiaggia.. meglio digitare qualche comando in più ed entrare come utente IMHO.

xnavigator
24-01-2008, 15:32
*