Saya telah mencoba menyalin beberapa file dari mesin lokal ke host jarak jauh.
root@local:~$ scp /var/www/html/file.php root@remote_host:/var/www/html/test/
Hasilnya adalah
scp: / var / www / html / test: Izin ditolak
root @ remote_host's password: Izin ditolak, silakan coba lagi.
Itulah hak folder pada mesin jarak jauh
drwxrwxr-x
Ada ide apa yang bisa menjadi masalah?
linux
ssh
permissions
scp
Jason Paddle
sumber
sumber
if there's an entry of your local host's pub key in remote_host:/.ssh/authorized_keys, then you'd be authenticated with pki instead of inputting password.
Saya mengerti sekarang. Saya belum pernah login tanpa kata sandi di server itu. Tidak, IP saya sama seperti biasanya.Jawaban:
Jika Anda login sebagai Root maka root memiliki semua izin yang diizinkan, terlepas dari izin pada direktori apa pun (pengecualian hanya bisa jika direktori memiliki sistem flag yang tidak dapat diubah atas chflags (1))
Anda memberikan sandi yang salah atau host jarak jauh yang digunakan hanya otentikasi kunci publik.
sumber
or remote host used public key authentication only
Saya tidak terbiasa dengan ini. Saya bisa masuk sebagai root tanpa masalah tetapi saya bisa menyalin.rsync -v -e ssh SomeLocalFile root@remoteHost:~
. ApakahSomeLocalFile
disalin ke rumah root? Coba jugawhich scp
dan periksa izin pada jalur yang dibuat untukscp
di server jauhAlasannya bisa beragam, tentu saja.
Jawaban yang paling jelas adalah bahwa, karena satu dan lain alasan, Anda tidak dapat dikonfirmasi oleh sistem jarak jauh. Namun, karena Anda mengeluarkan izin direktori pada sistem jarak jauh, saya menganggap Anda memiliki hak dan kemampuan untuk mengaksesnya dengan beberapa cara (tapi mungkin tidak dengan ssh).
Jadi, hal pertama yang harus dilakukan adalah ssh ke mesin dan pastikan Anda benar-benar dapat menulis ke lokasi itu (yang mungkin sudah Anda coba):
Jika Anda dapat melihat awal file kosong, maka Anda tahu Anda bisa menulis.
Andaikata Anda dapat dengan benar mengakses sistem tetapi hal di atas tidak berfungsi, ada kemungkinan juga tidak ada hak akses tulis pada direktori. Salah satu contohnya adalah jika direktori pada mesin jarak jauh berada dalam sistem file yang dipasang dari jenis tertentu, misalnya NTFS (yang tidak akan memberi Anda mode tipe UNIX yang dapat diandalkan), dan kernel menetapkannya untuk hanya-baca karena tidak dapat dipasang melalui sekering untuk memberikan izin menulis. Anda perlu memeriksa lebih hati-hati pada pengaturan lokal, tetapi ini akan menjadi pengaturan yang sangat tidak biasa kecuali itu baru (atau dirancang seperti itu).
Men-debug sistem dari sini akan sulit bagi saya, jadi saya hanya akan memberi Anda metode alternatif untuk mencoba. Jika Anda dapat mengakses sistem melalui ssh dan menulis file dari dalam sistem, maka cara untuk melakukannya adalah dengan melakukan sebaliknya, jika komputer lokal Anda tidak berada di belakang firewall, dll.
Anda dapat dengan mudah menemukan IP komputer yang Anda gunakan tanpa harus pindah ke terminal lain. Mari kita menjadikannya sebagai variabel lingkungan untuk kesederhanaan:
Saya biasanya menyertakan baris ini, misalnya, ~ / .bashrc karena saya merasa berguna.
Bagaimanapun, dalam hal apapun
Tentu saja, jika Anda ingin menjalankan program untuk melakukan pembaruan ini secara otomatis di mesin lokal, ini belum akan menyelesaikan masalah Anda! Ada beberapa cara untuk mengatasinya dengan memanggil perintah melalui SSH (jadi Anda akan memanggil scp via ssh, yang tampaknya kontra-intuitif); namun, agar sepenuhnya otomatis Anda harus mengatur kunci ssh, dan tidak membuat kata sandi untuk kunci tersebut. Ini bukan hal yang saya sarankan untuk akses root ke mesin, dan beberapa jenis debug dengan ssh mesin jarak jauh perlu dilakukan yaitu memblokir scp.
sumber
scp user@myip:/var/www/html/file.php /var/www/html/test/
tentu saja saya berubahuser@myip
dengan nyata tidak ada yang terjadi. Hanya tergantung di sana dan titik putih berkedip di konsol ..[root@remote_host /var/www/html/test ]# touch test
,[root@remote_host /var/www/html/test ]# ls -al
,-rw-r--r-- 1 root root 0 Jul 23 14:55 test
.. jadi saya bisa membuat file dalam foldernmap -PN localhost
di mana localhost adalah kata demi kata. Perlu diingat ini berfungsi seperti ini:ssh -p 22
danscp -P 22
untuk port 22 (default). Kasus p dan P tidak simetris. Saya pikir tidak ada masalah, tetapi Anda mungkin tidak menyebutkan detail server Anda. Jika port 22, Anda dapat menggunakan yang berikut ini dengan bidang target dan lokasi yang identik dengan scp, pada dasarnya:alias scpresume="rsync --partial --progress --rsh=ssh -e 'ssh -p 22'"