SFTP con password (no SSH key authentication) (IT)

Generalmente quando si utilizza SFTP si preferisce impostare la connessione tra client e server con le public key … in modo che i due sistemi risultino “trusted” e la connessione SFTP (o SSH, rsync, scp ecc) non richiedano utente e password.

Una comunicazione “trusted” con SSH e SFTP può essere configurata su IBM i seguendo le spiegazioni che trovate ai seguenti link:

Potremmo trovarci anche nella condizione di non poter condividere le chiavi pubbliche tra client e server … in questo caso l’autenticazione avviene tramite utente e password come un normale FTP… se il processo è interattivo nessun problema ma se il processo e batch dobbiamo fare qualcosa di differente rispetto a FTP e la password, che va comunque scritta in chiaro in un file di testo!, non può essere messa nello script batch insieme agli altri comandi come facciamo con FTP.

Possiamo percorrere strade differenti: vediamone due qui di seguito dove cerchiamo di scaricare un documento PDF dal server SFTP pubblico dimostrativo di Wing FTP Server … un server SFTP che risponde all’indirizzo ” demo.wftpserver.com” sulla porta “2222” con utente “demo-user” e password “demo-user”:

A – Utilizzare un “Password shell script”

In questo caso, come spiegato in dettaglio nel documento IBM Support “Batch SFTP Download Example Using Password Authentication“, il metodo prevede un file shell script con la password che viene passata a SFTP (SSH) tramite la funzione SSH_ASKPASS. Attenzione… per testare questo metodo è importante creare il CL ed eseguirlo in batch perchè SSH_ASKPASS non funziona da modalità “terminal”.

B – Utilizzare il tool “expect” in ambiente PASE

Expect è un tool che permette di automatizzare processi interattivi come ftp, sftp, telnet… nel nostro caso installando expect e creando un piccolo script per la gestione del processo sftp possiamo permetterci di creare un processo batch che si connette con SFTP, invia la password (che deve però essere scritta in chiaro nello script!) ed esegue i comandi SFTP come un normale script-file di FTP:

  • Installare “expect” sul PASE IBM i come spiegato in questo sito di Scott Klement: http://www.scottklement.com/expect/
  • Preparare uno script come quello indicato qui sotto (esempio con demo.wftpserver.com)
  • Eseguire lo script da PASE con “/usr/local/bin/expect -f /home/FAQ400/sftp_demo_expect.scp”
# Script per eseguire SFTP verso demo.wfpserver.com passando utente e password (in chiaro!) e seguire i passi per il download di un file.
#
# Eseguire questo script con:
# /usr/local/bin/expect -f /home/DEPE/sftp_demo_expect.scp
#
 set HOST "demo.wftpserver.com"
 set PORT "2222"
 set USER "demo-user"
 set PASSWORD "demo-user"
 spawn sftp -P $PORT $USER@$HOST
 expect "password:"
 send "$PASSWORD\r"
 expect "sftp>"
 send "lcd /home/FAQ400\r"
 expect "sftp>"
 send "cd download\r"
 expect "sftp>"
 send "get manual_en.pdf\r"
 expect "sftp>"
 send "Quit\r"
 exit 0

Riflessioni

Per SSH e SFTP è sempre preferibile utilizzare il metodo SSH Key Authentication rispetto a utente-password: purtroppo non sempre è possibile “scambiarsi” le chiavi tra client-e-server… in questo caso il metodo sopra descritto può essere d’aiuto!

Potrebbe capitare però di trovarsi nella situazione dove il server non accetta di ricevere la chiave pubblica del client ma di scambiarsi utente e password ogni volta

Related Posts
DB2 for i SQL – Stringhe – POSSTR-LOCATE-LOCATE_IN_STRING (IT)

Introduzione Spesso, nelle nostre applicazioni, abbiamo la necessità di lavorare con le stringhe di testo e l'SQL del DB2 può Read more

DB2 for i & SQL – FAQ & Howto (Part. 1) (IT)

Database DB2 e SQL ... forse lo strumento più potente e completo che abbiamo sulla piattaforma IBM i: ecco una Read more

Annuncio IBM i 7.4

Arriva direttamente con l'uovo di Pasqua questo annuncio IBM per le novità della versione IBM i 7.4, versione iNext secondo Read more

Generated Always Columns – Approfondimenti (IT)

Introduzione "Generated Always Column": sono colonne, campi, di una tabella il cui contenuto è controllato direttamente dal sistema ... e Read more

--- Roberto De Pedrini Faq400.com
Tags: ftpsftp

View Comments

  • Buongiorno Roberto, mi domandavo se ci fosse la possibilità di registrare l'esito dello script, eventualmente tracciando la tipologia di errore (es: connessione non disponibile, password non corretta, ecc....). Grazie per il tuo contributo e complimenti

  • Buongiorno Roberto
    ho seguito le indicazioni e l'esempio indicato seguendo la soluzione 'expect'. Il download che segue la get si ferma sempre dopo aver scaricato circa il 2% del file (256 kb a volte 288) senza dare nessun msg di errore. Idee ? Grazie per l'aiuto e complimenti

  • Buongiorno Roberto,
    ho provato la soluzione "A" di IBM ma non funziona...ho scritto ad IBM ma non so se e quando mi risponderà...tu hai avuto modo di provarlo? Hai trovato dei problemi?

    Grazie per l'aiuto

Recent Posts

VsCode Extension: Bob Cozzi’s RPG IV to RPG Free Conversion

L’estensione “RPG IV to Free Format Conversion” sviluppata da Bob Cozzi (Cozzi Research) è pensata per semplificare la conversione di…

3 mesi ago

IBM i & SQL Tips #010 – Localizzare programmi nella Call Stack con STACK_INFO

Ciao a tutti, oggi voglio segnalarvi un altro interessante contributo di Massimo Duca, parte della sua ormai nota serie IBM…

3 mesi ago

Display file DDS Edit per VsCode, nuova preview.

Incuriosito da alcuni messaggi di Cristian Larsen su Linkedin (New Release - Display File DDS Edit v.0.10.1) ho voluto scaricare…

4 mesi ago

Project Bob: il nuovo strumento AI di IBM per sviluppo COBOL su IBM Z e RPG su IBM i

Ciao a tutti,oggi voglio segnalarvi un annuncio che potrebbe segnare una svolta per lo sviluppo applicativo su ambienti IBM: Project…

4 mesi ago

IBM i & SQL Tips #6: chiamare API REST e analizzare le risposte JSON con SQL

Voglio segnalarvi un nuovo articolo molto interessante di Massimo Duca nella serie IBM i & SQL Tips. In questo sesto…

5 mesi ago

Come funziona il passaggio di parametri a un programma IBM i (RPG / Cobol)

Ciao a tutti, voglio segnalarvi un post molto utile di Marco Riva sul suo sito Markonetools, in cui spiega in…

5 mesi ago