הגדרת SFTP ואמתה באמצעות אימות מפתח ציבורי בלקוחות ושרתים

תאריך יצירת דף :

סביבה

חלונות
  • Windows 10 Pro
  • שרת Windows 2019
  • Windows 7
  • שרת Windows 2012 R2
OpenSSH
  • 7.7p1
  • 8.1p1 - בטא

※ זה עובד בגרסאות אחרות, אבל זה לא מאושר

בהתחלה

בפעם האחרונה, הגדרת שרת SFTP כדי לוודא שאימות סיסמה מאפשר לך לשלוח ולקבל קבצים. הפעם, sftp שולח ומקבל קבצים באמצעות אימות מפתח ציבורי.

הכנה מראש

  • ללקוח מותקן לקוח OpenSSH
  • בשרת מותקן שרת OpenSSH.
  • השרת מפעיל את שירות OpenSSH ויציאת 22 משוחררת.

יצירת מפתחות פרטיים וציבוריים בלקוח

היכנס ללקוח. ניתן ליצור מפתחות פרטיים וציבוריים גם בצד השרת, אך המפתח הפרטי יהיה הלקוח והמפתח הציבורי יוחזק על-ידי השרת. צור בצד הלקוח.

הפעל את PowerShell עם זכויות מנהל מערכת.

image

צור קובץ, עבור לתיקיה כלשהי עם הפקודה CD והקלד את הפקודה הבאה:

ssh-keygen -t rsa -f id_rsa

אתה יכול לשים ביטוי סיסמה (סיסמה) במפתח, אז בבקשה לשים את זה במידת הצורך.

image

אם המפתח נוצר בהצלחה, המפתחות הציבוריים והפרטיים נוצרים בתיקיה באופן הבא: "id_rsa" הוא המפתח הפרטי ו"id_rsa.pub" הוא המפתח הציבורי.

image

image

מיקום מפתח ציבורי בשרת

היכנס ל- Windows באמצעות חשבון SFTP עבור השרת.

נא מקם את המפתח הציבורי שנוצר "id_rsa.pub" בתיקיה הבאה בשרת. 「. אם אין לך תיקיית "ssh", נא צור תיקיית "ssh". כמו כן, שנה את שם הקובץ ל- "authorized_keys". (החלף את <> בשם המשתמש שאתה מתחבר באמצעות SFTP.)

  • C:\Users\< שם משתמש>\.ssh

image

שים לב שרק למשתמשים בעלי "מנהלי מערכת" או משתמשי SFTP צריכה להיות גישה לקובץ זה. חיבורי Sftp נכשלים תמיד אם למשתמשים אחרים יש גישה. לדוגמה, ל- NG יש קבוצה של משתמשים או כולם המצורפים להרשאה.

בדוגמה זו, ". זכויות הגישה של התיקיה "ssh" הן "קבוצה:SYSTEM", "קבוצה: מנהלים", ו "משתמש: sftptest". אם אין באפשרותך להסיר הרשאה, בטל ירושת הרשאות.

הפיכת אימות מפתח ציבורי לזמין בשרת

היכנס לשרת באמצעות משתמשי הרשאות של מנהלי מערכת ולאחר מכן פתח את התיקיות הבאות:

  • C:\ProgramData\ssh

מכיוון שיש קובץ בשם "sshd_config", העתק אותו ושנה את שם הקובץ ל- "sshd_config_default" והגדר גיבוי.

image

פתח את "sshd_config" בעורך הטקסט שהופעל עם הרשאות מנהל מערכת.

כדי להפוך אימות מפתח ציבורי לזמין, שנה אותו באופן הבא:

#PubkeyAuthentication yes

↓↓↓

PubkeyAuthentication yes

כמו כן, אימות סיסמה זמין כברירת מחדל, כך שאם ברצונך להפוך אותו ללא זמין, שנה אותו באופן הבא.

#PasswordAuthentication yes

↓↓↓

PasswordAuthentication no

ברצוני למקם מפתח ציבורי עבור כל חשבון SFTP, לכן אגיב על השורה הבאה:

Match Group administrators
       AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys

↓↓↓

#Match Group administrators
#       AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys

אם ברצונך לציין את ספריית הבסיס עבור כל חשבון SFTP, הוסף את השורה הבאה: בהתאם לשאלה אם תציין זאת או לא, בעת ציון נתיב תיקיה מהלקוח, הוא עשוי להשתנות לתבנית "C:\xxxxx" או "/xxxxx".

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

דוגמה

Match User TestUser
       ChrootDirectory C:\Users\TestUser

לאחר שמירת sshd_config, הפעל מחדש את שרת OpenSSH.

image

שליחה וקבלה של קבצים מלקוחות בעלי אימות מפתח ציבורי

מקם את המפתח הפרטי "id_rsa" שיצרת לפני התחברות ל- SFTP בתיקיה הנגישה רק למשתמש המפעיל את SFTP. שים לב שחיבורי sftp ייכשלו אם הם ממוקמים בתיקיה שמשתמשים אחרים יכולים לגשת אליה. במיוחד אם לתיקיה יש הרשאות עבור הקבוצות Users and Everyone, היא NG.

בעיקרון, מומלץ מכיוון שהוא יפנה באופן אוטומטי לנתיב אם אתה שם אותו בתיקיה הבאה.

  • C:\Users\< שם משתמש>\.ssh

הלקוח של ". זכויות הגישה של התיקיה "ssh" הן "קבוצה:SYSTEM", "קבוצה: מנהלי מערכת", "משתמש: < משתמש כניסה >".

אם ברצונך לגשת ל- sftp באמצעות המפתח הפרטי, הקלד את הפקודה באופן הבא (החלף את <>): אם הגדרת ביטוי סיסמה, הזן ביטוי סיסמה גם כן.

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

image

אם תיכנס בהצלחה, תועבר לתצוגה של המשתמש המחובר.

image

באפשרותך גם לבדוק שבאפשרותך להיכנס באמצעות הפקודה dir.

image

כעת, לאחר שהכנת קובץ בשם "test3.txt", שלח את הקובץ באמצעות הפקודה put.

put c:\temp\test3.txt

image

אם תבחן את התיקיה C:\Users\sftptest בצד השרת, תוכל לראות שהקובץ .txt test3 נשלח.

image

נסה לקבל מהלקוח.

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

image

הצלחתי לאשר שהקובץ ניתן להשיג.

image

תקציר

הצלחת לשלוח ולקבל קבצים על-ידי SFTP באמצעות אימות מפתח ציבורי. באמצעות מפתח ציבורי, צד השרת לא יוכל לדעת את הסיסמה. הוא מאפשר לך להחליף קבצים בצורה מאובטחת יותר מאימות סיסמה.