Come trasferire / eseguire uno script sul server Unix remoto dalla macchina Linux


0

Sto provando a distribuire un eseguibile ed eseguirlo su una macchina Unix remota (Linux / Solaris) da Linux senza inserire manualmente la password.

Ho provato scp e anche l'utilità key-gen SSH per interagire con il server remoto, ma in entrambi i casi non ho potuto evitare di fornire la password manualmente. Dato che devo eseguire questo comando / utility dal codice Java, dovrei evitare completamente di richiedere la password in fase di esecuzione. Ho esaminato molti argomenti in Google ma non si è verificato nulla.

Come posso fare questo?

Risposte:


1

Dovresti impostare l'autenticazione usando la coppia di chiavi pubblica / privata come hai già detto che hai generato usando ssh-keygen. Se è necessario utilizzarlo negli script automatici, è necessario generarlo senza una password sulla chiave privata. Ora, basta copiare sulla chiave pubblica usando ssh-copy-id name@hostper configurarla correttamente sul lato remoto (autorizzare la chiave pubblica).

Ti consiglio di seguire un tutorial come questo .

Se sshfunziona, allora scpfunziona allo stesso modo.

Dopo averlo impostato correttamente, dovresti essere in grado di farlo senza interazione:

scp myscript.sh name@remotehost:~/
ssh name@remotehost ~/myscript.sh

Per evitare di dover inserire una password o una passphrase ci sono un paio di scelte

  • utilizzare un agente di autenticazione per conservare la password / passphrase per la chiave privata
  • non utilizzare alcuna passphrase per proteggere la chiave privata

Il primo è appropriato per l'uso interattivo, il secondo è meno sicuro. Probabilmente dovresti impostare un nuovo ID utente per questo con diritti minimi all'estremità (ad es. Chroot)


Mi hai battuto sul tempo. Unirò la mia risposta (ora eliminata) nella tua, per favore annulla se ti opponi.
RedGrittyBrick il


0

Passaggio 0. È necessario disporre dell'accesso ssh al computer remoto.

Passaggio 1. Generare una coppia di chiavi privata / pubblica RSA con ssh-keygensulla propria scatola Linux e posizionarla da qualche parte (/ root / identità, ad esempio). Non fornire passphrase.

Passo 2. ssh-copy-id -i /root/identities/your.key user@remotemachine.tld

Passaggio 3. Questo è tutto. Ora è possibile ssh -i /root/identities/your.key user@remotemachine your_commande non verrà richiesta alcuna password. Certo, devi averlo PubkeyAuthentication = yesnella macchina remota sshd_config.

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.