Hoe geef ik het wachtwoord door aan scp?

Ik weet dat het niet wordt aanbevolen, maar is het überhaupt mogelijk om het wachtwoord van de gebruiker door te geven aan scp?

Ik wil graag een bestand kopiëren via scp als onderdeel van een batchtaak en de ontvangende server heeft natuurlijk een wachtwoord nodig en nee, ik kan dat niet gemakkelijk veranderen in op sleutels gebaseerde authenticatie.


Antwoord 1, autoriteit 100%

Je kunt het scripten met een tool zoals expect(er zijn ook handige bindingen, zoals Pexpectvoor Python).


Antwoord 2, autoriteit 92%

Gebruik sshpass:

sshpass -p "password" scp -r [email protected]:/some/remote/path /some/local/path

of zo wordt het wachtwoord niet weergegeven in de bash-geschiedenis

sshpass -f "/path/to/passwordfile" scp -r [email protected]:/some/remote/path /some/local/path

Het bovenstaande kopieert de inhoud van het pad van de externe host naar uw lokale.

Installeren:

  • ubuntu/debian
    • apt install sshpass
  • centos/fedora
    • yum install sshpass
  • mac met macports
    • port install sshpass
  • mac met brouwsel
    • brew install https://raw.githubusercontent.com/kadwanev/bigboybrew/master/Library/Formula/sshpass.rb

Antwoord 3, autoriteit 91%

genereer gewoon een ssh-sleutel zoals:

ssh-keygen -t rsa -C "[email protected]"

kopieer de inhoud van ~/.ssh/id_rsa.pub
en voeg het ten slotte toe aan de externe machines ~/.ssh/authorized_keys

zorg ervoor dat de externe machine de machtigingen heeft 0700 for ~./ssh folderen 0600 for ~/.ssh/authorized_keys


Antwoord 4, autoriteit 95%

Als u vanuit Windows verbinding maakt met de server, kunt u met de Putty-versie van scp (“pscp”) het wachtwoord doorgeven met de parameter -pw.

Dit wordt hier in de documentatie vermeld.


Antwoord 5, autoriteit 90%

curl kan worden gebruikt als alternatief voor scp om een ​​bestand te kopiëren en het ondersteunt een wachtwoord op de opdrachtregel.

curl --insecure --user username:password -T /path/to/sourcefile sftp://desthost/path/

Antwoord 6, autoriteit 54%

Je kunt het ‘expect’-script gebruiken op unix/terminal

Maak bijvoorbeeld ‘test.exp’ :

#!/usr/bin/expect
        spawn scp  /usr/bin/file.txt root@<ServerLocation>:/home
        set pass "Your_Password"
        expect {
        password: {send "$pass\r"; exp_continue}
                  }

voer het script uit

expect test.exp 

Ik hoop dat dat helpt.


Antwoord 7, autoriteit 26%

Hier is een voorbeeld van hoe je het doet met de tool expect:

sub copyover {
    $scp = Expect->spawn("/usr/bin/scp ${srcpath}/$file $who:${destpath}/$file");
    $scp->expect(30,"ssword: ") || die "Never got password prompt from $dest:$!\n";
    print $scp 'password' . "\n";
    $scp->expect(30,"-re",'$\s') || die "Never got prompt from parent system:$!\n";
    $scp->soft_close();
    return;
}

Antwoord 8, autoriteit 21%

Niemand noemde het, maar Putty scp( pscp) heeft een -pw optie voor wachtwoord.

Documentatie is hier te vinden: https:// the.earth.li/~sgtatham/putty/0.67/htmldoc/Chapter5.html#pscp


Antwoord 9, autoriteit 13%

U kunt ssh-copy-idgebruiken om de ssh-sleutel toe te voegen:

$which ssh-copy-id #check whether it exists

Indien aanwezig:

ssh-copy-id  "user@remote-system"

Antwoord 10, autoriteit 10%

Zodra u ssh-keygenheeft ingesteld zoals hierboven uitgelegd, kunt u

scp -i ~/.ssh/id_rsa /local/path/to/file [email protected]:/path/in/remote/server/

Als u elke keer minder typen wilt, kunt u uw .bash_profile-bestand wijzigen en

alias remote_scp='scp -i ~/.ssh/id_rsa /local/path/to/file [email protected]:/path/in/remote/server/

Doe vervolgens vanaf uw terminal source ~/.bash_profile. Als je daarna remote_scptypt in je terminal, zou het de opdracht scpmoeten uitvoeren zonder wachtwoord.


Antwoord 11, autoriteit 10%

  1. Zorg ervoor dat wachtwoordverificatie is ingeschakeld op de doelserver. Als Ubuntu draait, open dan /etc/ssh/sshd_configop de server, zoek de regels PasswordAuthentication=noen becommentarieer ze allemaal (zet #aan het begin van de regel), sla het bestand op en voer sudo systemctl restart sshuit om de configuratie toe te passen. Als zo’n regel niet bestaat, ben je klaar.
  2. Voeg -o PreferredAuthentications="password"toe aan uw scp-opdracht, bijvoorbeeld:
    scp -o PreferredAuthentications="password" /path/to/file user@server:/destination/directory
    

Antwoord 12, autoriteit 5%

Hier is een Linux/Python/Expect-achtig voorbeeld van een arme man, gebaseerd op deze blogpost: Eenvoudige shells upgraden naar volledig interactief
TTY’s
. Ik had dit nodig voor oude machines waar ik Expect niet kan installeren of geen modules aan Python kan toevoegen.

Code:

(
    echo 'scp [email protected]:./install.sh .'
    sleep 5
    echo 'scp-passwd'
    sleep 5
    echo 'exit'
) |
python -c 'import pty; pty.spawn("/usr/bin/bash")'

Uitvoer:

scp [email protected]:install.sh .
bash-4.2$ scp [email protected]:install.sh .
Password: 
install.sh                                 100%   15KB 236.2KB/s   00:00    
bash-4.2$ exit
exit

Antwoord 13, autoriteit 3%

  1. zorg ervoor dat je de tool “verwachten” hebt voordat, zo niet, doe het dan

    # apt-get install expect

  2. maak een scriptbestand met de volgende inhoud. (# vi /root/scriptbestand)

    spawn scp /path_from/file_name user_name_here@to_host_name:/path_to

    expect "password:"

    send put_password_here\n;

    interact

  3. voer het scriptbestand uit met de tool “expect”

    # expect /root/scriptfile


Antwoord 14

In het geval dat u een strikte hostsleutelcontrolefout opmerkt, gebruik dan -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/nullopties.

Het volledige voorbeeld is als volgt
sshpass -p "password" scp -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null [email protected]:/tmp/from/psoutput /tmp/to/psoutput


Antwoord 15

kopieer bestanden van de ene server naar de andere server (op scripts)

Installeer putty op ubuntu of andere Linux-machines. putty wordt geleverd met pscp. we kunnen bestanden kopiëren met pscp.

apt-get update
apt-get install putty 
echo n |  pscp -pw "Password@1234" -r user_name@source_server_IP:/copy_file_path/files /path_to_copy/files

Zie pscp help voor meer opties.


Antwoord 16

Een alternatief zou zijn om de openbare helft van de sleutel van de gebruiker toe te voegen aan het bestand met geautoriseerde sleutels op het doelsysteem. Op het systeem waarvan u de overdracht start, kunt u een ssh-agent-daemon uitvoeren en de privé-helft van de sleutel aan de agent toevoegen. De batchtaak kan vervolgens worden geconfigureerd om de agent te gebruiken om de persoonlijke sleutel te krijgen, in plaats van om het wachtwoord van de sleutel te vragen.

Dit moet mogelijk zijn op een UNIX/Linux-systeem of op een Windows-platform met pageant en pscp.


Antwoord 17

stappen om sshpass te krijgen Voor rhel/centos 6 :

# wget http://epel.mirror.net.in/epel/6/i386/epel-release-6-8.noarch.rpm
# rpm -ivh epel-release-6-8.noarch.rpm
# yum install sshpass

bron: https://community.mapr.com/thread/9040


Antwoord 18

Alle bovengenoemde oplossingen kunnen alleen werken als u de app hebt geïnstalleerd of als u beheerdersrechten moet hebben om te installeren, behalve of sshpass.

Ik vond deze zeer nuttige link om de scp eenvoudig in de achtergrond te starten.

$ nohup scp file_to_copy user@server:/path/to/copy/the/file > nohup.out 2>&1

https://charmyin.github. io/scp/2014/10/07/run-scp-in-background/


Antwoord 19

Ik vond hierdit erg nuttige antwoord.

rsync -r -v --progress -e ssh user@remote-system:/address/to/remote/file /home/user/

U kunt daar niet alleen het wachtwoord doorgeven, maar het zal ook de voortgangsbalk tonen tijdens het kopiëren. Echt geweldig.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

17 − four =

Other episodes