Saya tahu ini tidak disarankan, tetapi apakah mungkin untuk meneruskan kata sandi pengguna ke scp?
Saya ingin menyalin file melalui scp sebagai bagian dari pekerjaan batch dan server penerima tentu saja membutuhkan kata sandi dan, tidak, saya tidak dapat dengan mudah mengubahnya ke otentikasi berbasis kunci.
linux
scp
io-redirection
Argelbargel
sumber
sumber
Jawaban:
Anda dapat skrip dengan alat seperti harapkan (ada juga binding berguna, seperti Pexpect untuk Python).
sumber
Gunakan sshpass :
atau lebih, kata sandi tidak ditampilkan dalam bash history
Salinan konten jalur di atas dari host jarak jauh ke lokal Anda.
Install :
apt install sshpass
yum install sshpass
port install sshpass
brew install https://raw.githubusercontent.com/kadwanev/bigboybrew/master/Library/Formula/sshpass.rb
sumber
apt-get install sshpass
yum -y install sshpass
sshpass -f
passwdfile` scp [...]. This way, the password won't show up in
ps` listing, dll. Dan Anda dapat melindungi kata sandi dengan izin file.cukup buat kunci ssh seperti:
menyalin konten
~/.ssh/id_rsa.pub
dan terakhir menambahkannya ke mesin jarak jauh~/.ssh/authorized_keys
pastikan mesin jarak jauh memiliki izin
0700 for ~./ssh folder
dan0600 for ~/.ssh/authorized_keys
sumber
ssh-copy-id -i ~/.ssh/id_rsa.pub <remote_server>
untuk menyalin kunci di server jauhJika Anda terhubung ke server dari Windows, versi Putty dari scp ("pscp") memungkinkan Anda meneruskan kata sandi dengan
-pw
parameter.Ini disebutkan dalam dokumentasi di sini.
sumber
pscp -pw 'MyPa$$word' username@servername:/somedir/somefile ~/somedest
(Saya benci menggunakan dempul seperti ini, tetapi berfungsi)curl dapat digunakan sebagai alternatif untuk scp untuk menyalin file dan mendukung kata sandi pada commandline.
sumber
scp
harus menunggu lebih dari 30 detik untuk membiarkan saya memasukkan kata sandi, tetapicurl
segera berfungsi.Anda dapat menggunakan skrip 'harapkan' di unix / terminal
Misalnya buat 'test.exp':
jalankan skrip
Saya harap itu membantu.
sumber
Berikut ini adalah contoh bagaimana Anda melakukannya dengan
expect
alat:sumber
Tidak ada yang menyebutkannya, tetapi Putty scp (pscp) memiliki opsi -pw untuk kata sandi.
Dokumentasi dapat ditemukan di sini: https://the.earth.li/~sgtatham/putty/0.67/htmldoc/Chapter5.html#pscp
sumber
Anda dapat menggunakan
ssh-copy-id
untuk menambahkan kunci ssh:Jika ada:
sumber
Setelah Anda mengatur
ssh-keygen
seperti yang dijelaskan di atas, Anda dapat melakukannyascp -i ~/.ssh/id_rsa /local/path/to/file [email protected]:/path/in/remote/server/
Jika Anda ingin mengurangi pengetikan setiap kali, Anda dapat memodifikasi
.bash_profile
file Anda dan meletakkannyaKemudian dari terminal Anda lakukan
source ~/.bash_profile
. Setelah itu, jika Anda mengetikremote_scp
di terminal Anda harus menjalankanscp
perintah tanpa kata sandi.sumber
pastikan Anda memiliki alat "harapkan" sebelum, jika tidak, lakukanlah
# apt-get install expect
buat file skrip dengan konten berikut. (# vi / root / scriptfile)
spawn scp /path_from/file_name user_name_here@to_host_name:/path_to
expect "password:"
send put_password_here\n;
interact
jalankan file skrip dengan alat "harapkan"
# expect /root/scriptfile
sumber
Berikut ini contoh orang miskin seperti Linux / Python / Expect yang didasarkan pada posting blog ini: Meningkatkan shell sederhana menjadi TTYs yang sepenuhnya interaktif . Saya membutuhkan ini untuk mesin lama di mana saya tidak dapat menginstal Harapkan atau menambahkan modul ke Python.
Kode:
Keluaran:
sumber
Alternatifnya adalah menambahkan setengah publik dari kunci pengguna ke file kunci-resmi pada sistem target. Pada sistem tempat Anda memulai transfer, Anda dapat menjalankan daemon ssh-agent dan menambahkan separuh kunci privat ke agen. Pekerjaan batch kemudian dapat dikonfigurasi untuk menggunakan agen untuk mendapatkan kunci pribadi, daripada meminta kata sandi kunci.
Ini harus bisa dilakukan pada sistem UNIX / Linux atau pada platform Windows menggunakan pageant dan pscp.
sumber
Semua solusi yang disebutkan di atas hanya dapat berfungsi jika Anda menginstal aplikasi atau Anda harus memiliki hak admin untuk menginstal kecuali atau sshpass.
Saya menemukan tautan yang sangat berguna ini untuk memulai scp di Background.
https://charmyin.github.io/scp/2014/10/07/run-scp-in-background/
sumber
langkah-langkah untuk mendapatkan sshpass Untuk rhel / centos 6:
sumber: https://community.mapr.com/thread/9040
sumber
Saya menemukan jawaban yang sangat membantu di sini .
Anda tidak hanya dapat meneruskan kata sandi, tetapi juga akan menampilkan bilah kemajuan saat menyalin. Sangat mengagumkan.
sumber