Tidak dapat scp file dari host lokal ke remote - Izin ditolak

0

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?

Jason Paddle
sumber
Ada banyak alasan yang mungkin dan pada dasarnya Anda belum benar mengatur otor_keys di remote_host: /. Ssh /. Anda harus mengambil pemecahan masalah dasar dan melaporkan apa yang Anda amati untuk membiarkan orang lain membantu.
chingNotCHing
Tetapi jika mereka tidak didefinisikan dengan benar saya tidak akan dapat terhubung dan masuk server ini sama sekali tapi saya bisa ..
Jason Paddle
mis. jika ada entri kunci pub host lokal Anda di remote_host: /. ssh / otor_keys, maka Anda akan diautentikasi dengan pki alih-alih memasukkan kata sandi. Namun, katakan jika ip host lokal Anda baru-baru ini berubah, ini akan gagal. Saya sarankan Anda untuk merujuk tutorial ssh.
chingNotCHing
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.
Jason Paddle

Jawaban:

1

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.

Alex
sumber
Terima kasih atas jawabannya. or remote host used public key authentication onlySaya tidak terbiasa dengan ini. Saya bisa masuk sebagai root tanpa masalah tetapi saya bisa menyalin.
Jason Paddle
Juga kata sandi tidak salah pada 100%.
Jason Paddle
Ok, coba rsync -v -e ssh SomeLocalFile root@remoteHost:~. Apakah SomeLocalFiledisalin ke rumah root? Coba juga which scpdan periksa izin pada jalur yang dibuat untuk scpdi server jauh
Alex
3

Alasannya 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):

ssh root@remote_host
cd /var/www/html/test/
touch scratch

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:

export IP="`echo $SSH_CLIENT | awk '{print $1}'`"

Saya biasanya menyertakan baris ini, misalnya, ~ / .bashrc karena saya merasa berguna.

Bagaimanapun, dalam hal apapun

scp user@$IP:/var/www/html/file.php /var/www/html/test/

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.

daid
sumber
Terima kasih atas jawaban ini. Jadi saya sudah mencoba juga saat saya login ke mesin jarak jauh. Ketika saya menulis scp user@myip:/var/www/html/file.php /var/www/html/test/tentu saja saya berubah user@myipdengan nyata tidak ada yang terjadi. Hanya tergantung di sana dan titik putih berkedip di konsol ..
Jason Paddle
[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 folder
Jason Paddle
Konfirmasikan port 22 digunakan? nmap -PN localhostdi mana localhost adalah kata demi kata. Perlu diingat ini berfungsi seperti ini: ssh -p 22dan scp -P 22untuk 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'"
daid