İstemcilerde ve sunucularda ortak anahtar kimlik doğrulamasıyla SFTP'yi ayarlama ve doğrulama

Sayfa oluşturma tarihi :

çevre

Windows
  • Windows 10 Pro
  • Windows Server 2019
  • Windows 7
  • Windows Server 2012 R2
OpenSSH
  • 7.7p1
  • 8.1p1 - Beta

※ Diğer versiyonlarda çalışır, ancak onaylanmamıştır

İlk başta

Son kez, parola kimlik doğrulamasının dosya gönderip almanıza izin verdiğini doğrulamak için bir SFTP sunucusu kurabilirsiniz. Bu kez, sftp ortak anahtar kimlik doğrulamasını kullanarak dosya gönderir ve alır.

Önceden hazırlık

  • İstemcide bir OpenSSH istemcisi yüklü
  • Sunucuda yüklü bir OpenSSH sunucusu var.
  • Sunucu OpenSSH hizmetini başlatır ve bağlantı noktası 22 serbest bırakılır.

İstemcide özel ve ortak anahtarlar oluşturma

İstemcinin oturumunu açın. Özel ve ortak anahtarlar sunucu tarafında da oluşturulabilir, ancak özel anahtar istemci olur ve ortak anahtar sunucu tarafından tutulur. İstemci tarafında oluşturun.

PowerShell'i yönetici haklarıyla başlatın.

image

Dosya oluşturun, cd komutuyla herhangi bir klasöre gidin ve aşağıdaki komutu yazın:

ssh-keygen -t rsa -f id_rsa

Anahtara bir parola (parola) koyabilirsiniz, bu yüzden lütfen gerekirse koyun.

image

Anahtar başarıyla oluşturulursa, ortak ve özel anahtarlar klasörde aşağıdaki gibi oluşturulur: "id_rsa" özel anahtardır ve "id_rsa.pub" ortak anahtardır.

image

image

Sunucuya ortak anahtar yerleştirme

Sunucu için SFTP hesabınızla Windows'ta oturum açın.

Lütfen oluşturulan ortak anahtar "id_rsa.pub"ı sunucudaki aşağıdaki klasöre yerleştirin. 「. "Ssh" klasörünuz yoksa, lütfen bir klasör oluşturun. Ayrıca, dosya adını "authorized_keys" olarak değiştirin. (<> SFTP ile oturum açtığın kullanıcı adıyla değiştirin.)

  • C:\Kullanıcılar\kullanıcı <>\.ssh

image

Bu dosyaya yalnızca "yönetici" veya SFTP kullanıcısı olan kullanıcıların erişebilecek olduğunu unutmayın. Diğer kullanıcıların erişimi varsa Sftp bağlantıları her zaman başarısız olur. Örneğin, NG'nin izne eklenmiş bir Kullanıcı veya Herkes grubu vardır.

Bu örnekte, ". "ssh" klasörünün erişim hakları "Group:SYSTEM", "Group: Administrators" ve "User: sftptest" dir. bir izni kaldıramıyorsanız, izin devralmayı devre dışı bırakın.

Sunucuda ortak anahtar kimlik doğrulamasını etkinleştirme

Yönetici izinleri kullanıcılarıyla sunucuda oturum açın ve aşağıdaki klasörleri açın:

  • C:\ProgramData\ssh

"sshd_config" adlı bir dosya olduğundan, kopyalayın ve dosya adını "sshd_config_default" olarak değiştirin ve bir yedekleme ayarlayın.

image

Yönetici ayrıcalıklarıyla başlatılan metin düzenleyicisinde "sshd_config" açın.

Ortak anahtar kimlik doğrulamasını etkinleştirmek için aşağıdaki gibi değiştirin:

#PubkeyAuthentication yes

↓↓↓

PubkeyAuthentication yes

Ayrıca, parola kimlik doğrulaması varsayılan olarak etkinleştirilir, bu nedenle devre dışı bırakmak istiyorsanız aşağıdaki gibi değiştirin.

#PasswordAuthentication yes

↓↓↓

PasswordAuthentication no

Her SFTP hesabı için ortak bir anahtar yerleştirmek istiyorum, bu nedenle aşağıdaki satırı yorumlayacağım:

Match Group administrators
       AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys

↓↓↓

#Match Group administrators
#       AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys

Her SFTP hesabı için kök dizini belirtmek isterseniz, aşağıdaki satırı ekleyin: Bunu belirtip belirtmediğinize bağlı olarak, istemciden bir klasör yolu belirttiğinizde, "C:\xxxxx" veya "/xxxxx" biçimine geçebilir.

Match User <ユーザー名>
       ChrootDirectory <フォルダパス>

örnek

Match User TestUser
       ChrootDirectory C:\Users\TestUser

sshd_config kaydettikten sonra OpenSSH sunucusunu yeniden başlatın.

image

Ortak anahtar kimlik doğrulaması olan istemcilerden dosya gönderme ve alma

SFTP'ye bağlanmadan önce oluşturduğunuz "id_rsa" özel anahtarını yalnızca SFTP çalıştıran kullanıcının erişebileceği bir klasöre yerleştirin. Sftp bağlantılarının, diğer kullanıcılar tarafından erişilebilen bir klasöre yerleştirilirse başarısız olacağını unutmayın. Özellikle klasörün Kullanıcılar ve Herkes grupları için izinleri varsa, BU NG'dir.

Temel olarak, aşağıdaki klasöre koyarsanız yola otomatik olarak başvuracağı için önerilir.

  • C:\Kullanıcılar\kullanıcı <>\.ssh

Müşterinin ". "ssh" klasörünün erişim hakları "Grup:SİsTEM", "Grup: Yöneticiler", "Kullanıcı: < Oturum Açma kullanıcı >"dir.

Özel anahtarı kullanarak sftp'ye erişmek istiyorsanız, komutu aşağıdaki gibi yazın (<> değiştirin): Parola ayarladıysanız, bir parola da girin.

sftp -i id_rsa <ユーザー名>@<サーバー名>

image

Başarılı bir şekilde oturum açarsanız, oturum açan kullanıcının ekranına geçilirsiniz.

image

Dir komutuyla giriş olup olmadığınızı da kontrol edebilirsiniz.

image

Artık "test3.txt" adlı bir dosya hazırladığınıza göre, dosyayı put komutuyla gönderin.

put c:\temp\test3.txt

image

Sunucu tarafı C:\Users\sftptest klasörüne bakarsanız, test3.txt dosyasının gönderildiğini görebilirsiniz.

image

Müşteriden bir şey almayı dene.

get test3.txt c:\temp\test4.txt

image

Dosyanın elde edilebildiğini doğrulayabildim.

image

Özet

Ortak anahtar kimlik doğrulamasını kullanarak SFTP ile dosya gönderip alabildiniz. Ortak anahtar kullanarak, sunucu tarafı parolayı bilemez. Parola kimlik doğrulamasından daha güvenli bir şekilde dosya alışverişi yapmanıza olanak tanır.