הגדרת SFTP ואמתה באמצעות אימות מפתח ציבורי בלקוחות ושרתים
סביבה
- חלונות
-
- Windows 10 Pro
- שרת Windows 2019
- Windows 7
- שרת Windows 2012 R2
- OpenSSH
-
- 7.7p1
- 8.1p1 - בטא
※ זה עובד בגרסאות אחרות, אבל זה לא מאושר
בהתחלה
בפעם האחרונה, הגדרת שרת SFTP כדי לוודא שאימות סיסמה מאפשר לך לשלוח ולקבל קבצים. הפעם, sftp שולח ומקבל קבצים באמצעות אימות מפתח ציבורי.
הכנה מראש
- ללקוח מותקן לקוח OpenSSH
- בשרת מותקן שרת OpenSSH.
- השרת מפעיל את שירות OpenSSH ויציאת 22 משוחררת.
יצירת מפתחות פרטיים וציבוריים בלקוח
היכנס ללקוח. ניתן ליצור מפתחות פרטיים וציבוריים גם בצד השרת, אך המפתח הפרטי יהיה הלקוח והמפתח הציבורי יוחזק על-ידי השרת. צור בצד הלקוח.
הפעל את PowerShell עם זכויות מנהל מערכת.
צור קובץ, עבור לתיקיה כלשהי עם הפקודה CD והקלד את הפקודה הבאה:
ssh-keygen -t rsa -f id_rsa
אתה יכול לשים ביטוי סיסמה (סיסמה) במפתח, אז בבקשה לשים את זה במידת הצורך.
אם המפתח נוצר בהצלחה, המפתחות הציבוריים והפרטיים נוצרים בתיקיה באופן הבא: "id_rsa" הוא המפתח הפרטי ו"id_rsa.pub" הוא המפתח הציבורי.
מיקום מפתח ציבורי בשרת
היכנס ל- Windows באמצעות חשבון SFTP עבור השרת.
נא מקם את המפתח הציבורי שנוצר "id_rsa.pub" בתיקיה הבאה בשרת. 「. אם אין לך תיקיית "ssh", נא צור תיקיית "ssh". כמו כן, שנה את שם הקובץ ל- "authorized_keys". (החלף את <> בשם המשתמש שאתה מתחבר באמצעות SFTP.)
- C:\Users\< שם משתמש>\.ssh
שים לב שרק למשתמשים בעלי "מנהלי מערכת" או משתמשי SFTP צריכה להיות גישה לקובץ זה. חיבורי Sftp נכשלים תמיד אם למשתמשים אחרים יש גישה. לדוגמה, ל- NG יש קבוצה של משתמשים או כולם המצורפים להרשאה.
בדוגמה זו, ". זכויות הגישה של התיקיה "ssh" הן "קבוצה:SYSTEM", "קבוצה: מנהלים", ו "משתמש: sftptest". אם אין באפשרותך להסיר הרשאה, בטל ירושת הרשאות.
הפיכת אימות מפתח ציבורי לזמין בשרת
היכנס לשרת באמצעות משתמשי הרשאות של מנהלי מערכת ולאחר מכן פתח את התיקיות הבאות:
- C:\ProgramData\ssh
מכיוון שיש קובץ בשם "sshd_config", העתק אותו ושנה את שם הקובץ ל- "sshd_config_default" והגדר גיבוי.
פתח את "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.
שליחה וקבלה של קבצים מלקוחות בעלי אימות מפתח ציבורי
מקם את המפתח הפרטי "id_rsa" שיצרת לפני התחברות ל- SFTP בתיקיה הנגישה רק למשתמש המפעיל את SFTP. שים לב שחיבורי sftp ייכשלו אם הם ממוקמים בתיקיה שמשתמשים אחרים יכולים לגשת אליה. במיוחד אם לתיקיה יש הרשאות עבור הקבוצות Users and Everyone, היא NG.
בעיקרון, מומלץ מכיוון שהוא יפנה באופן אוטומטי לנתיב אם אתה שם אותו בתיקיה הבאה.
- C:\Users\< שם משתמש>\.ssh
הלקוח של ". זכויות הגישה של התיקיה "ssh" הן "קבוצה:SYSTEM", "קבוצה: מנהלי מערכת", "משתמש: < משתמש כניסה >".
אם ברצונך לגשת ל- sftp באמצעות המפתח הפרטי, הקלד את הפקודה באופן הבא (החלף את <>): אם הגדרת ביטוי סיסמה, הזן ביטוי סיסמה גם כן.
sftp -i id_rsa <ユーザー名>@<サーバー名>
אם תיכנס בהצלחה, תועבר לתצוגה של המשתמש המחובר.
באפשרותך גם לבדוק שבאפשרותך להיכנס באמצעות הפקודה dir.
כעת, לאחר שהכנת קובץ בשם "test3.txt", שלח את הקובץ באמצעות הפקודה put.
put c:\temp\test3.txt
אם תבחן את התיקיה C:\Users\sftptest בצד השרת, תוכל לראות שהקובץ .txt test3 נשלח.
נסה לקבל מהלקוח.
get test3.txt c:\temp\test4.txt
הצלחתי לאשר שהקובץ ניתן להשיג.
תקציר
הצלחת לשלוח ולקבל קבצים על-ידי SFTP באמצעות אימות מפתח ציבורי. באמצעות מפתח ציבורי, צד השרת לא יוכל לדעת את הסיסמה. הוא מאפשר לך להחליף קבצים בצורה מאובטחת יותר מאימות סיסמה.