راه اندازی و تایید SFTP با احراز هویت کلید عمومی در مشتریان و سرورها

تاریخ ایجاد صفحه :

محیط

ویندوز
  • ویندوز 10 طرفدار
  • ویندوز سرور 2019
  • ویندوز 7
  • ویندوز سرور 2012 R2
Openssh
  • 7.7p1
  • 8.1p1 - بتا

آثار این نسخه ها در نسخه های دیگر، اما آن را تایید نشده است

در ابتدا

آخرین بار، شما یک سرور SFTP راه اندازی می کنید تا تأیید کند که احراز هویت رمز عبور به شما اجازه ارسال و دریافت فایل ها را می دهد. این بار sftp فایل ها را با استفاده از احراز هویت کلید عمومی ارسال و دریافت می کند.

آماده سازی در پیش

  • مشتری دارای یک سرویس گیرنده OpenSSH نصب شده است
  • سرور دارای یک سرور OpenSSH نصب شده است.
  • سرور سرویس OpenSSH را شروع می کند و پورت ۲۲ آزاد می شود.

ایجاد کلیدهای خصوصی و عمومی در مشتری

وارد مشتری شوید. کلیدهای خصوصی و عمومی نیز می توانند در سمت سرور ایجاد شوند، اما کلید خصوصی مشتری خواهد بود و کلید عمومی توسط سرور برگزار خواهد شد. ایجاد در سمت مشتری.

PowerShell را با حقوق سرپرست شروع کنید.

image

یک فایل ایجاد کنید، به هر پوشه ای با دستور cd بروید و فرمان زیر را تایپ کنید:

ssh-keygen -t rsa -f id_rsa

شما می توانید یک عبارت عبور (رمز عبور) را در کلید قرار دهید، بنابراین لطفا آن را در صورت لزوم قرار دهید.

image

اگر کلید با موفقیت تولید شود، کلیدهای عمومی و خصوصی در پوشه به صورت زیر ایجاد می شوند: "id_rsa" کلید خصوصی است و "id_rsa.pub" کلید عمومی است.

image

image

قرار دادن یک کلید عمومی بر روی سرور

با حساب SFTP خود برای سرور وارد ویندوز شوید.

لطفا کلید عمومی ایجاد شده "id_rsa.pub" را در پوشه زیر روی سرور قرار دهید. 「. اگر پوشه "ssh" ندارید، لطفا یکی ایجاد کنید. همچنین، تغییر نام فایل به "authorized_keys". (نام کاربری <> با SFTP وارد سیستم می شوید جایگزین کنید.)

  • C:\Users\< username>\.ssh

image

توجه داشته باشید که تنها کاربرانی که "مدیران" یا کاربران SFTP دارند باید به این فایل دسترسی داشته باشند. اتصالات Sftp همیشه در صورتی که کاربران دیگر دسترسی داشته باشند شکست می خورند. به عنوان مثال، NG دارای گروهی از کاربران یا هر به اجازه است.

در این مثال ، ". حقوق دسترسی پوشه "ssh" شامل "Group:SYSTEM"، "Group: Administrators"، و "User: 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 در صورتی که در پوشه ای قرار داده شود که توسط کاربران دیگر قابل دسترسی باشد، شکست خواهد خورد. به خصوص اگر پوشه دارای مجوز برای کاربران و هر گروه، آن NG است.

اصولاً توصیه می شود زیرا اگر آن را در پوشه زیر قرار دهید به طور خودکار به مسیر مراجعه خواهد کرد.

  • C:\Users\< username>\.ssh

مشتری ". حقوق دسترسی پوشه "ssh" شامل "Group:SYSTEM", "Group: Administrators", "User: < Login user >".

اگر می خواهید با استفاده از کلید خصوصی به sftp دسترسی پیدا کنید، فرمان را به صورت زیر تایپ کنید (جایگزین <>): اگر یک عبارت عبور راه اندازی کرده ام، یک عبارت عبور نیز وارد کنید.

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

image

اگر با موفقیت وارد سیستم شوید، به صفحه نمایش کاربر وارد شده تعویض می شوید.

image

شما همچنین می توانید بررسی کنید که شما می توانید با دستور dir وارد شوید.

image

حالا که فایلی به نام "test3.txt" آماده کرده باشید، فایل را با دستور put ارسال کنید.

put c:\temp\test3.txt

image

اگر به پوشه سمت سرور C:\Users\sftptest نگاه کنید، می بینید که فایل test3.txt در حال ارسال است.

image

سعی کنید از مشتری دریافت کنید.

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

image

من توانستم تایید کنم که فایل قادر به به دست آوردن است.

image

خلاصه

شما قادر به ارسال و دریافت فایل ها توسط SFTP با استفاده از احراز هویت کلید عمومی بود. با استفاده از یک کلید عمومی، طرف سرور قادر به دانستن رمز عبور نخواهد بود. این اجازه می دهد تا شما را به تبادل فایل های امن تر از احراز هویت رمز عبور.