Ana içeriğe geç

Windows'tan Linux sunucuya dosya transferi#

Bu sayfa eskiden rdesktop üzerinden dolambaçlı bir yöntem anlatıyordu - rdesktop, Linux'tan Windows'a masaüstü bağlanmak için bir araçtır, dosya transferi için tasarlanmamıştır. Bugün ihtiyacınız olan şey çok daha basit: SSH tabanlı, aşağıdaki dört yöntemden biri.

Hangi yöntemi seçmeliyim#

Durum Yöntem
Birkaç dosyayı sürükle-bırakla göndermek istiyorum WinSCP
Script'ten/otomasyondan tek dosya kopyalamam gerekiyor scp (PowerShell, yerleşik)
Büyük bir klasörü tekrar tekrar, sadece değişenleri senkronlamam gerekiyor rsync (WSL üzerinden)
Zaten VS Code ile sunucuya bağlanıyorum Remote - SSH eklentisinin dosya gezgini

Dördü de aynı şeyi varsayar: sunucuya SSH ile bağlanabiliyor olmanız. Yoksa önce SSH anahtarınızı hazırlayın - panelde Ayarlar > SSH Anahtarları bölümünden, ya da Güvenlik sayfasındaki SSH Anahtar Yönetimi bölümünden adımları görebilirsiniz. Şifreyle her seferinde uğraşmaktan hem daha hızlı hem daha güvenlidir.

Yöntem 1: WinSCP (en kolay yol)#

  1. winscp.net adresinden indirin, kurun.
  2. New Session: Host name = sunucu IP'niz, Port = 22, User name = kullanıcınız.
  3. SSH anahtarınızı kullanacaksanız Advanced > SSH > Authentication'dan .ppk dosyanızı seçin (OpenSSH formatındaki anahtarı PuTTYgen ile .ppk'ya çevirmeniz gerekir).
  4. Bağlanın. Sol panel Windows, sağ panel sunucu - sürükle-bırak çalışır.

Arayüz tercihi

WinSCP'nin Commander modu (iki panel yan yana) çoğu kullanıcı için Explorer moduna göre daha hızlıdır - klasik dosya yöneticisi alışkanlığı olanlar için tanıdık gelir.

Yöntem 2: scp / sftp (yerleşik, script-dostu)#

Windows 10 sürüm 1809'dan beri OpenSSH istemcisi işletim sistemiyle birlikte gelir - ayrıca bir şey kurmanıza gerek yok. PowerShell'i açın:

# Tek dosya gönder
scp C:\Users\siz\rapor.zip kullanici@sunucu-ip:/home/kullanici/

# Klasörü gönder
scp -r C:\Users\siz\proje kullanici@sunucu-ip:/home/kullanici/

# Sunucudan indir
scp kullanici@sunucu-ip:/var/log/nginx/error.log C:\Users\siz\Masaustu\

Yön her zaman aynı mantıkla okunur: kaynak önce, hedef sonra. SSH anahtarınız varsayılan konumdaysa (C:\Users\siz\.ssh\id_ed25519) ayrıca belirtmenize gerek yok; farklı bir yerdeyse -i C:\yol\anahtar ekleyin.

Morpheus ile

"/var/log/nginx/error.log dosyasının son 200 satırını göster"

Morpheus dosyayı sunucuya gitmeden okuyabilir - küçük bir log'a bakmak için transfer gerekmez. Gerçek dosya transferi (yükleme/indirme) chat'in dışında kalır; bu bilerek böyle, çünkü sohbet üzerinden rastgele dosya yazmak güvenlik sınırlarının dışına çıkar.

Yöntem 3: rsync (WSL üzerinden, büyük/tekrarlayan senkron için)#

rsync yalnızca değişen kısımları gönderir - 10 GB'lık bir klasörde tek dosya değiştiyse tekrar 10 GB çekmez. Windows'ta yerleşik değildir; WSL (Windows Subsystem for Linux) üzerinden kullanılır.

wsl --install    # WSL kurulu değilse, bir kere

WSL içinden:

rsync -avz --progress /mnt/c/Users/siz/proje/ kullanici@sunucu-ip:/home/kullanici/proje/

-a izinleri ve zaman damgalarını korur, -v ayrıntılı çıktı verir, -z transferi sıkıştırır. Sondaki / önemlidir: proje/ klasörün içeriğini kopyalar, proje (slash'sız) klasörün kendisini hedefin içine koyar.

Yöntem 4: VS Code Remote - SSH#

Zaten VS Code ile sunucunuza bağlanıyorsanız ayrı bir araca gerek yok - sol taraftaki Explorer paneli doğrudan sunucudaki dosya sistemidir, Windows gezgininden sürükle-bırak çalışır.

Sorun giderme#

"Permission denied (publickey)" - anahtarınız sunucudaki ~/.ssh/authorized_keys içinde değil, ya da yanlış kullanıcıyla bağlanıyorsunuz. Panelden sunucunuzun SSH Anahtarları sekmesini kontrol edin.

"REMOTE HOST IDENTIFICATION HAS CHANGED" - sunucu yeniden kurulduysa ya da IP'si değiştiyse host key değişir, bu normaldir. ssh-keygen -R sunucu-ip ile eski kaydı silip tekrar bağlanın; ama bunu yalnızca değişikliği siz yaptıysanız yapın, beklenmedik bir uyarı gerçek bir MITM işareti de olabilir.

scp çok yavaş - şifreleme algoritması eski olabilir; -c aes128-gcm@openssh.com deneyin, ya da tekrarlayan transferlerde baştan rsync'e geçin.

Kontrol listesi#

  • [ ] SSH anahtarıyla şifresiz bağlanabiliyorsunuz
  • [ ] Küçük/tekil transferler için WinSCP ya da scp seçili
  • [ ] Büyük/tekrarlayan senkronlar için rsync seçili
  • [ ] Host key uyarısı çıkarsa önce kendi değişikliğiniz olup olmadığını doğruladınız