راه اندازی و تایید SFTP با احراز هویت کلید عمومی در مشتریان و سرورها
محیط
- ویندوز
-
- ویندوز 10 طرفدار
- ویندوز سرور 2019
- ویندوز 7
- ویندوز سرور 2012 R2
- Openssh
-
- 7.7p1
- 8.1p1 - بتا
آثار این نسخه ها در نسخه های دیگر، اما آن را تایید نشده است
در ابتدا
آخرین بار، شما یک سرور SFTP راه اندازی می کنید تا تأیید کند که احراز هویت رمز عبور به شما اجازه ارسال و دریافت فایل ها را می دهد. این بار sftp فایل ها را با استفاده از احراز هویت کلید عمومی ارسال و دریافت می کند.
آماده سازی در پیش
- مشتری دارای یک سرویس گیرنده OpenSSH نصب شده است
- سرور دارای یک سرور OpenSSH نصب شده است.
- سرور سرویس OpenSSH را شروع می کند و پورت ۲۲ آزاد می شود.
ایجاد کلیدهای خصوصی و عمومی در مشتری
وارد مشتری شوید. کلیدهای خصوصی و عمومی نیز می توانند در سمت سرور ایجاد شوند، اما کلید خصوصی مشتری خواهد بود و کلید عمومی توسط سرور برگزار خواهد شد. ایجاد در سمت مشتری.
PowerShell را با حقوق سرپرست شروع کنید.
یک فایل ایجاد کنید، به هر پوشه ای با دستور cd بروید و فرمان زیر را تایپ کنید:
ssh-keygen -t rsa -f id_rsa
شما می توانید یک عبارت عبور (رمز عبور) را در کلید قرار دهید، بنابراین لطفا آن را در صورت لزوم قرار دهید.
اگر کلید با موفقیت تولید شود، کلیدهای عمومی و خصوصی در پوشه به صورت زیر ایجاد می شوند: "id_rsa" کلید خصوصی است و "id_rsa.pub" کلید عمومی است.
قرار دادن یک کلید عمومی بر روی سرور
با حساب SFTP خود برای سرور وارد ویندوز شوید.
لطفا کلید عمومی ایجاد شده "id_rsa.pub" را در پوشه زیر روی سرور قرار دهید. 「. اگر پوشه "ssh" ندارید، لطفا یکی ایجاد کنید. همچنین، تغییر نام فایل به "authorized_keys". (نام کاربری <> با SFTP وارد سیستم می شوید جایگزین کنید.)
- C:\Users\< username>\.ssh
توجه داشته باشید که تنها کاربرانی که "مدیران" یا کاربران SFTP دارند باید به این فایل دسترسی داشته باشند. اتصالات Sftp همیشه در صورتی که کاربران دیگر دسترسی داشته باشند شکست می خورند. به عنوان مثال، NG دارای گروهی از کاربران یا هر به اجازه است.
در این مثال ، ". حقوق دسترسی پوشه "ssh" شامل "Group:SYSTEM"، "Group: Administrators"، و "User: 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 در صورتی که در پوشه ای قرار داده شود که توسط کاربران دیگر قابل دسترسی باشد، شکست خواهد خورد. به خصوص اگر پوشه دارای مجوز برای کاربران و هر گروه، آن NG است.
اصولاً توصیه می شود زیرا اگر آن را در پوشه زیر قرار دهید به طور خودکار به مسیر مراجعه خواهد کرد.
- C:\Users\< username>\.ssh
مشتری ". حقوق دسترسی پوشه "ssh" شامل "Group:SYSTEM", "Group: Administrators", "User: < Login user >".
اگر می خواهید با استفاده از کلید خصوصی به sftp دسترسی پیدا کنید، فرمان را به صورت زیر تایپ کنید (جایگزین <>): اگر یک عبارت عبور راه اندازی کرده ام، یک عبارت عبور نیز وارد کنید.
sftp -i id_rsa <ユーザー名>@<サーバー名>
اگر با موفقیت وارد سیستم شوید، به صفحه نمایش کاربر وارد شده تعویض می شوید.
شما همچنین می توانید بررسی کنید که شما می توانید با دستور dir وارد شوید.
حالا که فایلی به نام "test3.txt" آماده کرده باشید، فایل را با دستور put ارسال کنید.
put c:\temp\test3.txt
اگر به پوشه سمت سرور C:\Users\sftptest نگاه کنید، می بینید که فایل test3.txt در حال ارسال است.
سعی کنید از مشتری دریافت کنید.
get test3.txt c:\temp\test4.txt
من توانستم تایید کنم که فایل قادر به به دست آوردن است.
خلاصه
شما قادر به ارسال و دریافت فایل ها توسط SFTP با استفاده از احراز هویت کلید عمومی بود. با استفاده از یک کلید عمومی، طرف سرور قادر به دانستن رمز عبور نخواهد بود. این اجازه می دهد تا شما را به تبادل فایل های امن تر از احراز هویت رمز عبور.