Saya melihat-lihat pertanyaan lain di sini dan di berbagai tutorial "penggunaan scp" di Internet, tapi saya tidak bisa memilah apa yang salah.
Saya menggunakan Linux Mint dan saya mencoba mencari tahu cara kerja scp .
Saya memiliki file file.ext (di komputer saya) di direktori / home / name / dir /
Saya terhubung ke mesin jarak jauh menggunakan ssh , seperti:
ssh -p 2222 username@domain
ia menanyakan kata sandi dan shell menampilkan:
username@domain ~ $
sekarang, Jika saya mengeluarkan perintah (sebelum saya menjalankan ssh saya berada di direktori lokal / home / name / dir ):
scp -r -P 2222 file.ext username@domain
output adalah:
cp: cannot stat ‘file.ext’: No such file or directory
Hasil yang sama jika alih-alih file.ext saya menulis path lengkap
scp -r -P 2222 /home/name/dir/file.ext username@domain
Juga, admin server mengatakan kepada saya bahwa saya akan mengunggah file ke direktori home jarak jauh saya (bukan root), seperti:
scp -r -P 2222 file.ext username@domain:~/
tetapi ketika saya melakukannya dan tekan "Enter" tidak ada yang terjadi, seolah-olah shell sedang menunggu input lebih lanjut.
Ringkasan masalah saya:
- cp: tidak ada file atau direktori seperti itu
- shell "macet" pada ~ /
Ada saran?
localuser@machineA: ssh -p 2222 username@domain
(untuk menunjukkan bahwa Anda menjalankan perintah ssh sebagai pengguna lokal di machineA)scp
, sisi jarak jauh selalu harus mengandung titik dua (mis.remotehost:/tmp
), selain itu ia hanya akan melakukan salinan biasa (scp /tmp/foo.txt example.com
akan menyalin/tmp/foo.txt
ke file lokalexample.com
)-r
bendera, karena ini tidak diperlukan untuk menyalin file tunggal (ini digunakan untuk menyalin direktori secara rekursif )Jawaban:
Anda perlu menjalankan
scp
perintah dari mesin lokal, bukan pada remote. Anda tidak perlussh
sama sekali:Anda juga tidak perlu
-r
:Jika Anda sudah masuk ke mesin jarak jauh dan ingin menyalin dari lokal Anda, Anda perlu memastikan bahwa mesin lokal Anda dapat diakses melalui internet dan telah
ssh
diatur. Saya tidak berpikir ini adalah apa yang Anda cari tetapi jika ya, jalankan ini dari remote:sumber
Saya menyediakan dua metode memuat / menaikkan file antara mesin jarak jauh dan lokal (saya menggunakan Mac air):
Dalam hal ini, saya ingin menaikkan / menurunkan "11.jpeg" antara lokal dan jarak jauh:
1.
Untuk mencapai maksud yang sama ketika Anda masuk ke SSH , Anda harus terlebih dahulu mengatur "System Preferences> sharing> remote log in> semua pengguna (saya tidak yakin apakah Anda harus mengatur untuk" semua pengguna ", tetapi itu berfungsi dalam situasi ini ) "Mac akan memberi tahu Anda" Untuk masuk ke komputer ini dari jarak jauh, ketik: ssh username @ xxxxxx, lalu ketikkan perintah di bawah ini:
scp username @ domain: /home/xxx/xxx/11.jpeg username @ xxxxxx: / Pengguna / nama pengguna / Desktop /
Perintah di atas adalah untuk mengunduh file dari jarak jauh ke lokal saat Anda masuk ke ssh, Cukup ubah dua jalur ketika Anda ingin mengunggah file.
sumber
Jika Anda menjalankan perintah scp ini pada mesin jarak jauh, itu mencari
file.ext
sebagai file "lokal", yaitu pada mesin jarak jauh.Untuk menyalin file dari mesin jarak jauh ke mesin lokal, gunakan
scp -P 2222 username@domain:dir/file.ext localdir
(dengan anggapanfile.ext
ada di~/dir
dalam komputer remote, seperti dalam contoh Anda). Jika Anda menjalankanscp
mesin jarak jauh, balikkan "lokal" dan "jauh".sumber
Gunakan
scp
perintahJika Anda ingin mentransfer folder, cukup
zip
dulu, kami bisaunzip
melakukannya nanti.Dari komputer Anda, jalankan ini:
Di sini,
root
adalah akun Anda, dan10.145.198.100
merupakan alamat IP server jarak jauh. Kami akan menyalinthe_file
ke~/
folder di remote.Unzip file:
sumber
root
bahkan memiliki akses SSH pada mesin jarak jauh? Itu cukup tidak aman. Lebih baik menggunakan penggunaan biasa dan kemudiansudo
melakukan apa pun yang dilakukan root pada mesin itu.Hanya sedikit kontribusi, mungkin ini dapat membantu pemula seperti saya: jalur ke direktori jarak jauh harus ditulis seperti ini:
username@domain:~/remote_directory
Yang ingin saya soroti di sini adalah kita harus selalu menambahkannya
:~/
sumber
Solusi untuk menyalin file dari
Linux client
keLinux Server
Periksa apakah
sshd
berjalan di server Anda menggunakan:ps aux | grep sshd
Jika tidak menginstal
OpenSSH
menggunakansudo apt-get install openssh-server openssh-client
https://www.tecmint.com/install-openssh-server-in-linux/Mulai ulang server Anda dan verifikasi bahwa
sshd
sudah berjalan menggunakanps aux | grep sshd
Jika perlu, Anda dapat mengonfigurasi
/etc/ssh/sshd_config
file Anda , tetapi tidak perlu untuk konfigurasi sederhanaverifikasi bahwa port terbuka menggunakan
netcat
nc -v -z 127.0.0.1 22
Untuk menyalin file dari
Linux
klien keLinux
klien gunakan scp sebagai berikutscp ~/filename.md [email protected]:~/folder/filename.md
Untuk memverifikasi bahwa file telah disalin gunakan
ssh [email protected]
dan berikan kata sandi Anda.Solusi untuk menyalin file dari
Linux client
ke `WindowsAda beberapa klien untuk menjalankan server SSH pada Windows seperti OpenSSH dari MS
MobaSSH
Menggigit server SSH
Instal salah satu server di atas dan pastikan port 22 terbuka menggunakan
firewall netsh advfirewall tambahkan aturan nama = "SSH Port 22" dir = dalam aksi = izinkan protokol = UDP localport = 22
firewall netsh advfirewall tambahkan aturan nama = "SSH Port 22" dir = aksi keluar = izinkan protokol = UDP localport = 22
firewall netsh advfirewall tambahkan aturan nama = "SSH Port 22" dir = dalam aksi = izinkan protokol = TCP localport = 22
firewall netsh advfirewall tambahkan aturan nama = "SSH Port 22" dir = tindakan keluar = izinkan protokol = TCP localport = 22
advfirewall netsh menonaktifkan semua status profil
Perbandingan dari server-server ini:
Menggigit server SSH
Menyediakan hampir dekat ke pelengkap asli
cmd
,powershell
cepat, pelengkapan otomatisMemberikan kemampuan tambahan untuk penyesuaian, jika Anda membutuhkan penggunaan tingkat lanjut
Kustomisasi pengguna untuk kebutuhan sederhana adalah 0. Saya mulai menggunakannya dalam 2 menit, setelah menghabiskan banyak waktu untuk mencoba
MobaSSH
danOpenSSH
bekerja.Untuk menyalin file menggunakan scp use:
scp ~/filename.md [email protected]:/C/Users/username/filename.md
Gratis untuk penggunaan pribadi, $ 99 untuk penggunaan profesional. Karena begitu banyak fitur dan integrasi yang hebat, harganya sepadan dengan uang yang dikeluarkan
MobaSSH:
menyediakan shell linux pada windows di mana perintah linux sederhana seperti
ls
,cp
,find
dll kerja, mirip denganMINGW64
Anda dapat mengakses
cmd
danpowershell
langsung dengan mengetikcmd
ataupowershell
Dukungan Unicode buruk. Pengkodean salah. Misalnya, jika Anda mencoba memulai
Python
penerjemah, itu akan macet. Anda perlu mengubah penyandian secara manual menggunakan ( https://stackoverflow.com/a/12834315/4752883 ):chcp 65001
set PYTHONIOENCONDING=utf-8
dan kemudian mulai Python promptHal yang hebat tentang MobaSSH adalah ia memiliki antarmuka pengguna yang sangat sederhana,
scp
danssh
dan terintegrasi dengan baik. Jadi akan bekerja untuk kasus penggunaan sederhanaUntuk menyalin file dari
Linux
klien keWindows
server yang berjalanMobaSSH
: gunakanscp ~/filename.md [email protected]:/cygdrive/c/Users/username/filename.md
ini karenaMobaSSH
didasarkan padacygwin
dan drive-nya dipetakan dengan cara yang samacygwin
-s drive dipetakan.Gunakan VMs dari Microsoft dengan OpenSSHv6.7 yang diinstal dari https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/ , OpenSSHv6.7 sudah diinstal.
Sangat buggy, dan Anda harus menyesuaikannya dengan berat.
Perintah selesai tidak berfungsi
Ini akan meninggalkan ruang kosong ketika Anda memindahkan kursor di terminal
Python tidak berfungsi
Versi OpenSSH yang lebih baru, mungkin telah diperbaiki. MS lebih lanjut tampaknya membuat OpenSSH tersedia melalui
Optional Features
https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/sumber
Jika Anda menggunakan OSX ...
Ketika saya mencoba menjalankannya dengan nama pengguna @ lokal: / file_directory ...
Saya mendapat kesalahan berikut:
Larutan
Di Mac saya, saya harus melakukan yang berikut untuk mengatur lokal
ssh
:Ini kemudian memberikan alamat nama pengguna @ ip.
sumber
Saya punya masalah yang sama hari ini di MAC.
Ketikkan perintah berikut:
sumber