Jika saya ingin mengirim sesuatu melalui scp ke server:
$ scp file server:
_____ _____ _____
$
, lalu tiga baris dicetak dan file tidak disalin. Namun saya dapat terhubung ke server melalui ssh tanpa masalah:
$ ssh server
Bagaimana cara membuat scp bekerja?
scp file server:
(dengan asumsi "server" adalah nama host yang valid), file tersebut disalin ke direktori akun Anda.scp
ke lokasi lain di server, lalucp
ataumv
sesudahnyassh
Jawaban:
Salah satu kemungkinan penyebab perilaku ini adalah mencetak pesan apa pun selama proses login di server. Scp bergantung pada ssh untuk menyediakan terowongan terenkripsi yang benar-benar transparan antara klien dan server.
Periksa semua skrip login di server, dan juga coba gunakan pengguna lain. Metode lain untuk mengidentifikasi sumber kesalahan adalah dengan menggunakan -v pada perintah, untuk melacak kemajuan transaksi, dan melihat di mana ia gagal. Anda bisa menggunakan hingga -vvv untuk meningkatkan verbositas, jika perlu. Memeriksa berbagai bentuk scp juga bisa bersifat instruktif, seperti yang tercantum dalam pos oleh InChargeOfIT.
scp, di bawah tenda, mengatur terowongan menggunakan ssh, dan kemudian mentransfer file di atas terowongan itu, dengan perintah ssh di ujung untuk menangkap file ketika datang. Ini diilustrasikan dengan penggunaan tar dan ssh untuk menyalin struktur direktori yang menjaga kepemilikan dan waktu pembuatan dengan perintah berikut:
untuk mengirimnya, dan
untuk mendapatkannya kembali.
sumber
enable
dan memasukkan kata sandi tidak berarti itu adalah hak pribadi 15. Jika Anda tidak melihat "hak istimewa 15" di suatu tempat dishow run | inc USERNAME
maka mereka tidak akan dapat scp.export SHELL=/bin/zsh
) di~/.bashrc
. Ini kadang-kadang digunakan tanpa adanyachsh
.Periksa .bashrc pengguna atau file yang setara. ~ / .bashrc bersumber untuk info masuk non-interaktif. Jika ada gema atau perintah yang menghasilkan apa pun, itu akan merusak protokol SCP.
sumber
fortune | cowsay
, masukkan saja .bash_profile. Itu hanya untuk login interaktif dan tidak boleh bersumber selama sesi SCP..bashrc
, yang tidak akan ada di komputer lain. Anda dapat menggunakan logika dalam jawaban ini untuk melompati~/.bashrc
ketika non-interaktif (yang merupakan kasus untukscp
).Sunting: Apakah Anda yakin Anda memasukkan jalur yang valid dalam perintah scp? Sebagai contoh:
akan gagal (pada kenyataannya, itu hanya akan mencetak perintah seperti yang Anda lihat). Dalam hal ini, Anda harus memberikan jalur yang valid ke server jarak jauh .. misalnya,
scp test.txt [email protected]:~/
Contoh penggunaan:
Kirim file:
Dapatkan file:
Contoh:
Kirim file dari Desktop saya ke folder rumah saya di server jarak jauh:
Ingat
~
ini adalah jalan pintas untuk direktori home Anda ... misalnya, / home /Kirim file ke webroot:
Dalam contoh ini, pengguna john_doe perlu menulis hak istimewa di direktori remote / var / www.
sumber
------
... tidak ada contoh Anda yang berhubungan dengan itu.scp somefile [email protected]:
Juga, tidak memiliki izin yang benar pada direktori jarak jauh juga akan menyebabkan masalah.Pada beberapa host mereka salah sumber
.bash_profile
untuk login non-interaktif seperti scp. Pesan yang dicetak ke terminal mungkin dapat menyebabkanscp
tidak berfungsi dengan benar. Jika Anda memiliki pesan di dalamnya,.bash_profile
ini bisa menjadi penyebabnya.Agar pesan login, spanduk, dll. Anda tetap ditampilkan pada login interaktif dan masih dapat digunakan
scp
melalui login non-interaktif, tambahkan berikut ini sebelum pesan apa pun yang akan dicetak dalam.bash_profile
file Anda .Kode alternatif adalah:
Dan kode alternatif lain:
Yang saya percaya adalah versi yang lebih panjang dari kode alternatif pertama. Saya telah menemukan pada beberapa host kode pertama tidak berfungsi dengan benar tetapi yang kedua tidak.
Selama login scp non-interaktif akan membatalkan eksekusi .bash_profile lebih lanjut dan memungkinkan scp untuk bekerja, tetapi akan menampilkan pesan login Anda ketika Anda login melalui ssh.
Catatan: Ini juga dapat digunakan dalam
.bashrc
file Anda jika Anda sumbernya dari.bash_profile
(untuk $ PATH) sehingga hanya sebagian yang bersumber selama login non-interaktif.sumber
Ini tidak menjawab pertanyaan secara langsung, tetapi mungkin bermanfaat bagi orang-orang seperti saya, mencari solusi dengan scp pembekuan saat mentransfer file antara 2 host jarak jauh.
Jika
scp
hang karena pesan dari ssh, itu bisa membantu untuk menekannya:dan / atau
Dalam kasus saya itu tampaknya membantu, tetapi tidak menyelesaikan seluruh masalah. Kami tidak dapat menemukan mengapa scp hang saat mentransfer dari jarak jauh ke jarak jauh. Itu tergantung di tengah file. 9 kali berhasil, percobaan nomor 10 tidak berhasil. Kami menduga itu bisa jadi hang ketika koneksi VPN kami mendapatkan lonjakan lalu lintas sejenak dan kemudian scp tidak pulih. Benar-benar hanya hang selamanya dan bahkan tidak memberikan pesan kesalahan.
Namun, saya menyerah dan beralih ke sftp. Ini lebih cepat, karena menggunakan koneksi langsung antara host jarak jauh. Anda harus mengaktifkan
dalam file ~ / .shh / config dari mesin yang menjalankan skrip. Tentu saja ini hanya solusi jika mesin jarak jauh keduanya berada dalam jaringan tepercaya Anda.
sumber
Aku menelepon
exec /bin/bash
di.cshrc
.Menghapus ini memecahkan masalah bagi saya.
sumber