SCP Erişimi Reddedildi: Neden Oluyor ve Nasıl Düzeltilir?

SCP, SSH üzerinden dosya aktarımı için kullanılan açık kaynaklı bir araçtır. Linux ve diğer desteklenen işletim sistemlerinde SSH üzerinden dosya aktarımı için kullanılabilir. İki sunucu arasında SSH bağlantısı kullanarak dosya aktarımı yapmak için kullanılabilir.

Olabilirdi “İzin reddedildi” hatası SCP'de çeşitli nedenlerden dolayı, örneğin; Yanlış tanımlanmış rotalar أو İzin yazımında hataBu hataya yol açan bazı nedenleri ve nasıl düzeltileceğini inceleyeceğiz.

Sebep: Yazma izni eksikliği

Bu hatanın oluşmasının nedenlerinden biri şudur: Kullanıcınızın yazma izni yok. Dosyaları yazmaya çalıştığınız sunucudaki belirli dizin için. Bu izinleri kontrol etmek için şunları yapabilirsiniz: 'ls -l' komutunu kullanarakBu, yazma izinlerini gösterecektir.

'W' harfini arayın. Çıktının ilk sütunundaki ilk dört karakter içinde. Bunu görürseniz, şu anlama gelir: Kullanıcınızın yazma izni var. Bu nedenle, dizin budur. Alternatif olarak, o dizinde touch komutunu kullanarak her zaman bir dosya oluşturabilirsiniz. 'İzin reddedildi' gibi herhangi bir hata almazsanız, bu, kullanıcınızın yazma izinlerine sahip olduğu anlamına gelir.

Örnek:

Diyelim ki SCP kullanarak uzak bir sunucuya dosya kopyalamak istiyorsunuz ve yazma izinleri nedeniyle "erişim reddedildi" hatası alıyorsunuz.

scp abcd.txt user@127.0.0.1:/home/abcduser/abcd.txt

Çözüm 1: Dosyaları aktarmak için root hesabını kullanın.

Bu tür bir hatayı düzeltmek için, Yazma izinlerini vermeniz gerekiyor. Kullanıcınızın bu dizine erişebilmesi için root veya sudo ayrıcalıklarına sahip olmanız gerekir. Yapabileceğiniz bir diğer şey ise dosyayı kullanıcınızın yazma iznine sahip olduğu bir dizine kopyalamaktır.

Bu durumda, ya mevcut kullanıcının /home/abcduser dizinine yazma izni vermeniz ya da bu dosyayı kopyalamak için root kullanıcı hesabını kullanmanız gerekir.

Bir root kullanıcısının scp kullanarak dosya kopyalamasına izin vermek için, güvenlik nedenleriyle önerilmeyen ancak yine de bu tür senaryolarda kullanıp daha sonra devre dışı bırakabileceğiniz SSH üzerinden root oturum açma izni vermeniz gerekir.

Bunu yapmak için açın OpenSH yapılandırma dosyası /etc/ssh/sshd_config konumunda bulunur. وPermitRootLogin hakkındaki yorumu kaldırın. Uzak sunucudaki bir metin düzenleyicide.

Ardından, uzak sunucuya root hesabını kullanarak bağlanın.

Ardından komutu aşağıdaki gibi çalıştırın:

scp abcd.txt root@127.0.0.1:/abcduser/abcd.txt

Ya da kısaca, bu işinizi görecektir.

scp abcd.txt 127.0.0.1:/abcduser/abcd.txt

Çünkü bunlar birbirinin aynısı.

Çözüm 2: Kullanıcınızı yazma izinleri grubuna ekleyin:

Linux'ta bir kullanıcının bir dizine/dosyaya yazabilmesi için, ya kullanıcıyı dizinin veya dosyanın sahibi olan gruba eklemeniz ya da dosyanın sahipliğini o kullanıcıya vermeniz gerekir.

Örneğimizde, uzak sistemdeki /home/ dizininde ls -l komutunu çalıştırarak /home/abcd dosyasının hangi gruba ait olduğunu buluyoruz.

`ls -l` komutu size bir çıktı verecektir; bu çıktının dördüncü sütununda ilgili dizinin/dosyanın sahibi olan grup yer almaktadır.

Örneğimizde, `abcduser` grubu `/home/abcduser` dizininin sahibidir ve bu nedenle şunları yapabiliriz:

Uzak sistemde bu komutu çalıştırmanız yeterli.

sudo groupadd user abcd

Bu, gruptur. 'abcd' Kullanıcımızın dahil olmasını istediğimiz grup ve grubunu değiştirmek istediğimiz kullanıcı 'kullanıcı'dır.

`ls -l` komutunu tekrar çalıştırın ve eğer Altıncı sırada 'w' harfini gördüm. Birinci sütundaki çıkıştan anlaşıldığı üzere, bu, grubun bu dizinde yazma izinlerine sahip olduğu anlamına gelir.

Ardından komutu tekrar çalıştırın; bizim örneğimizde bu komut şu şekilde olacaktır:

scp abcd.txt user@somepc:/home/abcduser/abcd.txt

Çözüm 3: Bu dizinin sahibi olan kullanıcıyı kullanarak dosyayı kopyalayın.

En basit çözüm, bu dizinin sahibi olan kullanıcının dosyayı bu dizine kopyalamasıdır.

Dizin üzerinde `ls -l` komutunu çalıştırmanız yeterlidir. Bizim örneğimizde bu şu şekilde olacaktır:

ls -l /home/

Üçüncü sütunun çıktısı, ilgilendiğiniz dizin adına karşılık gelen dizinin sahibi olan kullanıcı olacaktır. Bizim örneğimizde, yukarıdaki ekran görüntüsünde gösterildiği gibi `abcduser` kullanıcısı `/home/abcduser` dizininin sahibidir.

Ardından, dosyayı `scp` komutuyla uzak sunucuya kopyalarken bu belirli hesabı kullanın.
Bizim durumumuzda, komutu şu şekilde çalıştırıyoruz:

scp abcd.txt abcduser@127.0.0.1:/home/abcduser/abcd.txt

Sebep 2: Uzak sunucuda o kullanıcıya ait özel anahtar bulunmamaktadır.

Sunucular arasında dosya aktarımı yapmaya çalışırken "scp izni reddedildi" (genel anahtar) hatası alabilirsiniz.

Bu, `ssh` için bir kimlik doğrulama sorunudur ve bunun nedeni, `scp` çalışırken ona özel bir anahtar eklememiş olmanızdır.

Örnek:

scp somefile user@127.0.0.1:/home/user/somefile.txt

Çözüm:

Bunun basit çözümü şudur: `scp` komutunu `-i` bayrağıyla çalıştırmakBu nedenle, uzak sunucuya bağlanmak ve dosya aktarmak istediğiniz kullanıcının özel anahtarını ekleyin.

Öncelikle o kullanıcıya ait özel anahtara sahip olduğunuzdan emin olmalısınız; eğer sahip değilseniz, uzak makinede bir anahtar oluşturmanız ve ardından `scp` aracının bu anahtarı `-i` etiketiyle kullanmasını sağlamanız gerekir.

Bizim durumumuzda çözüm şöyle olurdu:

scp -i key.pem somefile user@127.0.0.1:/home/user/somefile.txt

Burada `key.pem`, 'user' kullanıcısının özel anahtar dosyasıdır.

Not: Kullandık `127.0.0.1` Örneğin, uzak sunucu olarak ele alındığında, sizin durumunuzda uzak sunucu büyük olasılıkla yerel cihazınız değil, uzak bir cihazdır.

 

Yoruma kapalı.