ubuntu

استفاده از nsh برای دستورات از راه دور اوبونتو 18

مقدمه
معمولاً مدیریت چندین دستگاه به صورت روزانه دشوار است. در حالی که Secure Shell SSH گزینه مناسبی برای دسترسی از راه دور است ، و خود پروتکل از نظر راحتی و امنیت دارای اشکالاتی است.
به عنوان مثال ، برای دسترسی به دستگاه های از راه دور نیاز به داشتن یک آدرس IP عمومی و یک درگاه فوروارد شده است ، که آنها را در معرض اینترنت یا حداقل شبکه بزرگتری قرار می دهد. این امر به ویژه در مورد استفاده از گذرواژه برای احراز هویت به جای یک جفت کلید عمومی و خصوصی نگران کننده است. علاوه بر این ، اگر از قبل کلید عمومی دستگاه از راه دور را نمی شناسید ، ممکن است در معرض حمله “شخص سومی” قرار داده باشید. و بسیاری از دستگاه های از راه دور که می خواهید به آنها دسترسی داشته باشید ، آدرس IP عمومی ندارند ، یا دارای یک آدرس IP پویا هستند که ممکن است شما از آن اطلاع نداشته باشید.
علاوه بر این ، SSH در هر بخش از راه دور به یک اتصال نیاز دارد. اگر یک کاربر نیاز به اجرای یک فرمان واحد در بین صدها یا حتی هزاران دستگاه داشته باشد ، ابتدا باید با استفاده از یک TCP ، اتصال به هر دستگاه را برقرار کند ، که کارایی کمتری دارد.
NKN Shell یا nsh جایگزینی برای SSH است که روشی مناسب و مطمئن برای اجرای دستورات از راه دور فراهم می کند. nsh از شبکه عمومی جهانی NKN که انتقال داده های امن و غیرمتمرکز را فراهم می کند ، بهره می برد. این معماری از آدرسهای منحصر به فردی استفاده می کند که حاوی یک کلید عمومی است که برای مسیریابی و رمزنگاری پایان به پایان و بدون هیچ گونه زیرساخت کلید عمومی (PKI) استفاده می شود. همچنین این شبکه نیازی به داشتن سرور مجازی از راه دور برای داشتن آدرس IP عمومی ندارد. سرور مجازی از راه دور فقط باید به اینترنت دسترسی داشته باشد و بتواند اتصالات خروجی HTTP و WEBocket را برقرار کند. در نتیجه ، دستگاه های از راه دور شما در معرض اینترنت باز قرار ندارند.
در این آموزش برای اجرای دستورات روی یک دستگاه از راه دور از برنامه های کاربردی NKN shell daemon و NKN Shell Client Xterm استفاده خواهید کرد. برای این کار ، NKN Shell daemon را بر روی یک دستگاه از راه دور با دسترسی به اینترنت نصب و پیکربندی می کنید ، یک جفت کلید تولید می کنید و اتصال خود را از کلاینت انجام می دهید.
پیش نیازها
برای دنبال کردن این آموزش به موارد زیر نیاز دارید:
• یک سرور مجازی Ubuntu 18.04 که طبق راهنمای تنظیم اولیه سرور مجازی Ubuntu 18.04 تنظیم شد و شامل یک کاربرغیر ریشه فعال شده با SUDO و یک فایروال باشد.
• یک مرورگر وب نصب شده بر روی دستگاه محلی شما.
مرحله 1 – نصب سرور مجازی NKN Shell Daemon روی یک سرور مجازی از راه دور
ابتدا NKN Shell Daemon (nsd) را بر روی سرور مجازی خود نصب کنید. این برنامه nkn-multiclient را فراخوانی می کند ، که به شبکه عمومی NKN متصل می شود و آدرس مسیریابی را بدست می آورد. سپس Daemon دستورات پوسته های دریافتی را از کلاینت های معتبر و لیست بندی شده شنود می کند ، آن دستورات را اجرا می کند ، و سپس نتایج را ارسال می کند.
با دانلود آخرین باینری nshd پیش ساخته از GitHub شروع کنید:
$ wget https://github.com/nknorg/nkn-shell-daemon/releases/latest/download/linux-amd64.tar.gz

فایل را از حالت فشرده خارج کنید:
$ tar -zxvf linux-amd64.tar.gz

سپس فایل ها را به دیرکتوری / usr / local / bin انتقال دهید تا سیستم در دسترس باشد:
$ sudo mv ./linux-amd64/* /usr/local/bin/

در مرحله بعد ، آن را پیکربندی می کنید تا به عنوان یک فرآیند daemon با استفاده از Systemd اجرا شود و در صورت ریستارت سرور مجازی مجدداً راه اندازی شود.
فایلی با نام nshd.service را در / etc / systemd / system ایجاد کنید:
$ sudo nano /etc/systemd/system/nshd.service

تعاریف خدمات زیر را برای پیکربندی سرویس اضافه کنید:
/etc/systemd/system/nshd.service
[Unit]
Description=NKN Shell Daemon
After=network.target

[Service]
Type=simple
User=root
Group=root
Restart=always
ExecStart=/usr/local/bin/nshd

[Install]
WantedBy=multi-user.target

اطلاعات بیشتر در مورد فایلهای واحد Systemd را در لینک Understanding Systemd Units and Unit Files ببینید.
فایل را ذخیره کرده و از ویرایشگر خارج شوید. سپس سرویس nshd را با دستورات زیر فعال و راه اندازی کنید:
$ sudo systemctl enable nshd.service

$ sudo systemctl start nshd.service

برای اطمینان از فعال بودن سرویس ، دستور زیر را اجرا کنید:
$ sudo systemctl status nshd.service

خواهید دید که این وضعیت فعال است:
Output
● nshd.service – NKN Shell Daemon
Loaded: loaded (/etc/systemd/system/nshd.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2020-02-19 19:16:02 UTC; 7s ago
Main PID: 3457 (nshd)
Tasks: 10 (limit: 1152)
CGroup: /system.slice/nshd.service
└─3457 /usr/local/bin/nshd

Feb 19 19:16:02 your_hostname systemd[1]: Started NKN Shell Daemon.
Feb 19 19:16:03 your_hostname nshd[3457]: Create directory /etc/nshd/
Feb 19 19:16:03 your_hostname nshd[3457]: Create password and save to file /etc/nshd/wallet.pswd
Feb 19 19:16:03 your_hostname nshd[3457]: Create wallet and save to file /etc/nshd/wallet.json
Feb 19 19:16:03 your_hostname nshd[3457]: Create authorized pubkeys file /etc/nshd/authorized_pubkeys
Feb 19 19:16:03 your_hostname nshd[3457]: Listening at d46567b883a3070ee3fe879d9fa2d5dc55a95f79ff2797c42df36c6979e5c4Aba

برای اتصال به سرور مجازی خود ، باید آدرس NKN آن را دریافت کنید ، که می توانید در خروجی دستور قبلی پیدا کنید. همچنین می توانید دستور زیر را برای به دست آوردن آدرس اجرا کنید:
$ nshd addr

آدرس خود را مشاهده می کنید:
Output
e70ca28ede84fc0659f2869255e8a393aef35b4fa5a7e036f29127c7dba75383
این آدرس را جایی بنویسید زیرا برای اتصال به سرور مجازی خود به آن نیاز خواهید داشت.
اکنون که Daemon در حال اجرا و شنود است ، می توانید کلاینت مبتنی بر وب را پیکربندی کنید تا با سرور مجازی در ارتباط باشد.
مرحله 2 – پیکربندی مجوزها برای کلاینت (سرویس گیرنده) NKN Shell
به یک کلاینت سازگار نیاز دارید که بتواند به دستگاه از راه دور متصل شود. در این آموزش از NKN Shell Client Xterm ، یک سرویس دهنده پوسته NKN مبتنی بر وب استفاده خواهید کرد. چند روش مختلف برای اجرای آن وجود دارد:
از نسخه میزبانی شده در https://nsh.nkn.org/ استفاده کنید. توجه داشته باشید که در حالی که این صفحه وب روی سرور مجازی میزبانی شده است ، در واقع یک برنامه وب محلی خالص است که در مرورگر شما اجرا می شود.
کد منبع را بدست آورید و خودتان هاست آن باشید.
از افزونه nShell Chrome استفاده کنید.
در این آموزش از نسخه میزبانی شده استفاده خواهید کرد. در دستگاه محلی خود ، مرورگر وب خود را باز کرده و به https://nsh.nkn.org بروید. یک صفحه خوش آمد گویی خواهید دید.
روی Generate New Key Pair کلیک کنید. کلیدهای شما مطابق تصویر زیر تولید و نمایش داده می شوند:
توجه: هنگامی که یک جفت کلید جدید تولید می کنید ، یک secret seed را مشاهده خواهید کرد. این seed مخفی را درست مانند کلید خصوصی SSH خود ایمن نگه دارید . هرکسی که این seed مخفی را داشته باشد می تواند از آن برای بازگرداندن کلید عمومی شما استفاده کند و سپس دستورات را بر روی دستگاههای از راه دور خود اجرا کند. مرورگر شما این seed را به خاطر می سپارد ، اما باید آن را در جایی ایمن کپی کنید تا بتوانید دوباره از آن در دستگاه جدید استفاده کنید.

secret seed را در جایی امن ذخیره کنید. بعدا می توانید از آن برای بازگرداندن کلید عمومی خود استفاده کنید تا بتوانید از یک دستگاه کلاینت دیگر متصل شوید.
از آنجا که این یک جفت کلید جدید است ، می بایست کلید عمومی را به فایل / etc / nshd / autor_pubkeys روی سرور مجازی خود اضافه کنید.
/etc/nshd/authorized_pubkeys نقش مشابهی با فایل ~/authorized_keys دارد که کنترل می کند کدام کلیدهای عمومی SSH می توانند وارد سیستم شوند. فایل authorized_pubkeys می تواند مشخص کند که کدام کاربر با یک کلید در ارتباط است. برای اهداف امنیتی ، بهتر است با استفاده از یک کاربر غیر ریشه در این آموزش وارد شوید ، تا بتوانید کلید عمومی تولید شده را با کاربر sammy خود که در راهنمای اولیه تنظیم سرور مجازی در پیش نیاز این مقاله ایجاد کرده اید ، مرتبط کنید.
برای متصل کردن کاربر به کلید عمومی ، باید شناسه کاربر (UID) و شناسه گروه (GID) این کاربر را دریافت کنید. در هنگام ورود به عنوان کاربر sammy ، دستور زیر را روی سرور مجازی خود اجرا کنید:
$ id

UID و GID کاربر را مشاهده خواهید کرد:
Output
uid=1000(sammy) gid=1000(sammy) groups=1000(sammy),27(sudo)

اکنون فایل authorized_pubkeys را در ویرایشگر خود باز کنید:
$ sudo nano /etc/nshd/authorized_pubkeys

یک خط واحد حاوی کلید عمومی ، uid و gid را اضافه کنید که با فاصله جدا شده اند:
authorized_pubkeys
5d5367a5730427c205904a4457392051d2045dbce0186518fb6eb24dd9e41ba6 1000 1000

فایل را ذخیره کنید.
تأیید کنید که فایل حاوی محتوای صحیح است:
$ cat /etc/nshd/authorized_pubkeys

کلید شما روی صفحه چاپ می شود:
Output
5d5367a5730427c205904a4457392051d2045dbce0186518fb6eb24dd9e41ba6 1000 1000

سپس nshd daemon را دوباره شروع کنید تا تغییرات اعمال شود:
$ sudo systemctl restart nshd.service

اکنون بیایید با اتصال به سرور مجازی و اجرای یک دستور ، آن را تست کنیم.
مرحله 3 – ارسال یک فرمان به دستگاه از راه دور و دریافت پاسخ
در NKN Shell Client ، آدرس nshd راه دور خود را از مرحله 1 و همچنین یک شناسه کلاینت اختیاری وارد کنید:
برای شروع اتصال ، روی connect کلیک کنید.
شما به دستگاه از راه دور خود متصل خواهید شد و یک اعلان پایانه را در مرورگر میبینید. از اینجا به بعد می توانید درست مانند SSH از آن استفاده کنید. به عنوان مثال ، دستور زیر را برای سوییچ به دیرکتوری / etc / nshd اجرا کنید:
Sammy@your_server_ip~$ cd /etc/nshd

سپس مطالب آن را لیست کنید:
Sammy@your_server_ip/etc/nshd$ ls

محتوای دایرکتوری را مشاهده خواهید کرد:
Output
authorized_pubkeys wallet.json wallet.pswd

می توانید با تایپ کردن exit اتصال را قطع کنید. هنگامی که نیاز به اتصال مجدد دارید ، به اینترفیس وب مجدداً سر بزنید و جزئیات اتصال خود را وارد کنید. اگر یک جفت کلید جدید ایجاد می کنید ، باید کلید عمومی جدید را به سرور مجازی خود اضافه کنید.
نتیجه
در این آموزش ، nsh را نصب کرده و پیکربندی کرده اید تا ایمن و راحت دستورات را به یک دستگاه از راه دور ارسال کنید. nsh برای دستیابی به یک دستگاه از راه دور و اجرای سریع یک فرمان جهت دستیابی به آخرین وضعیت خدمات یا مشاهده برخی از تنظیمات پیکربندی ، راهی عالی میباشد. این برنامه مبتنی بر شبکه عمومی جهانی NKN است ، و استفاده از آن رایگان است بنابراین می توانید امروز آن را در برنامه یا جریان کاری خود وارد کنید.
همچنین می توانید nkn-tunel را که از SSH یا سایر برنامه های مبتنی بر TCP پشتیبانی می کند ، جستجو کنید.

 

از این لینک ها زیر می توانید آمورش های بیشتری برای لینوکس پیدا کنید :

استفاده از nsh برای دستورات از راه دور اوبونتو 18 –  میزبانی وب سایت با Caddy اوبونتو 18

تنظیم سرور ذخیره سازی آبجکت با استفاده از Minio در اوبونتو 18  –  ضبط و اشتراک گذاری ترمینال با Terminalizer اوبونتو

تنظیم مسیریابی شرطی و پاسخگو با React Router v4  –  ایجاد یک URL کوتاه کننده با Django و GraphQL

یک برنامه ردیابی سلامت را با React ،GraphQL و Okta –  ساخت برنامه چت زمان حقیقی React و GraphQL

به روزرسانی فیلترهای مرتب سازی Angular (زاویه ای) –  با استفاده از React ، Superagent و API اینستاگرام

نحوه ساختن یک برنامه جهانی با Nuxt.js و Django –  دکمه دانلود با ریزتعاملات با CSS ، anime.js و segment.js

نحوه اضافه کردن عکسهای پیشرفته در Node و Express  –  با Vue ،GraphQL و Apollo Client یک وبلاگ ساخت

یک برنامه SSR با روتر Preact ، Unistore و Preact بسازید  –  ساخت برنامه های وب پیشرونده با Angular

اشکال زدایی JavaScript در تولید با نقشه های منبع  –  می توان با Koa برنامه “سلام جهانی” ساخت

ساختن یک برنامه با Node ، React ، Okta  –   مدیریت حالت فرم در React با Redux Form

نحوه تنظیم Laravel ، Nginx و MySQL  –  ارتقاء از AngularJS به Angular با ngUpgrade

استفاده از ویژوال استودیو از راه دور  –  احراز هویت API با JSON Web Tokens و Passport

راه اندازی یک پروژه React با Parcel  –  ایجاد Swiper مانند Netflix را در Vue

ساختن یک ربات تلگرام با Laravel و BotMan  –  استفاده از map، filter، و reduce در جاوااسکریپت

چگونه می توان موتور جستجوی زمان واقعی را با Vue  –  ساختن سیستم مستندات (Documentation) با Vue و VuePress

استفاده از اشتراک زنده با کد ویژوال استودیو  –  ساخت یک مقیاس اندازه گیری قدرت رمز عبور را در React

شروع عملی GraphQL با Node.js و Express  –  ساخت یک برنامه آب و هوا در Django

نحوه نصب Discourse روی Ubuntu 18  –  تأیید رمز عبور با استفاده از درخواست فرم Laravel

نحوه نصب MySQL در CentOS 8  –  استفاده از پسوند PDO PHP برای انجام تراکنش MySQL

نصب و پیکربندی SNMP Daemon و Client در Ubuntu 18  –  نصب Linux، Nginx، MariaDB،PHP در Debian 10

 

 

کلمات کلیدی خرید سرور

خرید vps – خرید سرور مجازی – خرید سرور – سرور هلند – فروش vps – سرور مجازی آمریکا – خریدvps – سرور مجازی هلند – فروش سرور مجازی – سرور آمریکا – vps – سرور مجازی انگلیس – سرور مجازی آلمان – سرور مجازی کانادا – خرید vps آمریکا – خرید وی پی اس – سرور – خرید سرور مجازی هلند – vps خرید – سرور مجازی فرانسه – سرور مجازی هلند – خرید vps آمریکاخرید سرور مجازی ارزان هلندvpsخرید vps هلندخرید سرور مجازی آمریکاخرید vps فرانسهتست vpsسرور مجازی تستسرور مجازی ویندوزارزانترین vpsخرید وی پی اسvps ارزان – 


https://vpsgol.net/product/vps-germany/

https://vpsgol.net/product/vps-usa/

https://vpsgol.net/product/vps-france/

https://vpsgol.net/product/vps-canada/

https://vpsgol.net/product/vps-poland/

https://vpsgol.net/product/vps-netherlands/

https://vpsgol.net/product/vps-england/