سرور SSH
RouterOS سرور SSH را ساخته است که به طور پیش فرض فعال است و به اتصالات ورودی در پورت TCP/22 گوش می دهد. در منوی Services امکان تغییر پورت و غیرفعال کردن سرور وجود دارد .
خواص
منوی فرعی: /ip ssh
ویژگی | شرح |
---|---|
allow-none-crypto (yes|no; Default: no) | در صورتی که الگوریتمهای رمزنگاری روی هیچکدام تنظیم نشده باشند، امکان اتصال وجود دارد یا خیر. |
always-allow-password-login (yes | no; Default: no) | اجازه ورود رمز عبور همزمان با پیکربندی مجوز کلید عمومی. |
forwarding-enabled (both | local | no | remote; Default: no) | اجازه می دهد تا کنترل کنید کدام روش ارسال SSH مجاز است:
|
host-key-size (1024 | 1536 | 2048 | 4096 | 8192; Default: 2048) | اندازه کلید RSA زمانی که کلید میزبان در حال بازسازی است. |
host-key-type (ed25519 | rsa; Default: rsa) | نوع کلید میزبان را انتخاب کنید |
strong-crypto (yes | no; Default: no) | از رمزگذاری قویتر، الگوریتمهای HMAC استفاده کنید، از اعداد اول DH بزرگتر استفاده کنید و موارد ضعیفتر را ممنوع کنید:
|
دستورات
ویژگی | شرح |
---|---|
export-host-key (key-file-prefix) | RSA/Ed25519 عمومی و خصوصی را به فایلها صادر کنید. دستور یک پارامتر می گیرد:
|
import-host-key (private-key-file) | کلید خصوصی RSA/Ed25519 را از فایل مشخص شده وارد و جایگزین کنید. دستور یک پارامتر می گیرد:
|
regenerate-host-key () | مجموعه جدیدی از کلیدهای خصوصی (RSA/Ed25519) روی روتر تولید شده و جایگزین شده است. توجه داشته باشید که کلیدهای وارد شده قبلی ممکن است کار نکنند. |
صادر کردن کلید میزبان SSH به دستورات کاربر “sensitive” نیاز دارد.
فعال کردن احراز هویت PKI
نمونه ای از وارد کردن کلید عمومی برای مدیر کاربر
کلیدهای SSH را در دستگاه مشتری (دستگاهی که از آن متصل خواهید شد) ایجاد کنید. کلید عمومی SSH را در روتر آپلود کرده و آن را وارد کنید
/user ssh-keys import public-key-file=id_rsa.pub user=admin
کلاینت SSH
منوی فرعی: /system ssh
ورود ساده به هاست راه دور
این دستور می تواند به هاست راه دور متصل شود و سشن ssh را آغاز کند. آدرس IP از هر دو IPv4 و IPv6 پشتیبانی می کند.
/system ssh 192.168.88.1
/system ssh 2001:db8:add:1337::beef
در این مورد، نام کاربری ارائه شده به میزبان راه دور، نامی است که به روتر وارد شده است. اگر مقدار دیگری مورد نیاز است، باید از user=<username> استفاده شود.
/system ssh 192.168.88.1 user=lala
/system ssh 2001:db8:add:1337::beef user=lala
با آدرس IP خاصی از روتر وارد شوید
به دلایل آزمایشی یا امنیتی ممکن است لازم باشد با استفاده از آدرس منبع خاصی از اتصال، به میزبان دیگری وارد شوید. در این مورد باید از آرگومان src-address=<ip address> استفاده شود. توجه داشته باشید که آدرس IP در این مورد از هر دو IPv4 و IPv6 پشتیبانی می کند
/system ssh 192.168.88.1 src-address=192.168.89.2
/system ssh 2001:db8:add:1337::beef src-address=2001:db8:bad:1000::2
در این حالت، کلاینت ssh سعی می کند به آدرس مشخص شده متصل شود و سپس اتصال ssh به میزبان راه دور را آغاز کند.
با استفاده از کلید عمومی/خصوصی RSA وارد شوید
نمونه ای از وارد کردن کلید خصوصی برای مدیر کاربر
اول از همه، کلیدهای SSH تولید شده در حال حاضر را به یک فایل صادر کنید:
/ip ssh export-host-key key-file-prefix=admin
دو فایل admin_rsa و admin_rsa.pub تولید خواهد شد. فایل pub باید در سمت سرور SSH قابل اعتماد باشد ( نحوه فعال کردن SSH PKI در RouterOS ) کلید خصوصی باید برای کاربر خاص اضافه شود.
/user ssh-keys private import user=admin private-key-file=admin_rsa
فقط کاربر با حقوق کامل روی روتر میتواند مقدار ویژگی «user» را در /user ssh-keys private تغییر دهد.
پس از نصب کلید عمومی و اعتماد بر روی سرور SSH، می توان یک جلسه PKI SSH ایجاد کرد.
/system ssh 192.168.1.1
اجرای دستورات از راه دور
برای اجرای فرمان از راه دور باید در انتهای خط ورود به سیستم ارائه شود
/system ssh 192.168.88.1 "/ip address print"
/system ssh 192.168.88.1 command="/ip address print"
/system ssh 2001:db8:add:1337::beef "/ip address print"
/system ssh 2001:db8:add:1337::beef command="/ip address print"
اگر می خواهید دستورات از راه دور را از طریق اسکریپت یا زمانبندی اجرا کنید ، از دستور ssh-exec استفاده کنید .
اجرایی SSH
منوی فرعی: /system ssh-exec
Command ssh-exec یک دستور ssh غیر تعاملی است، بنابراین اجازه می دهد تا دستورات را از راه دور بر روی دستگاه از طریق اسکریپت ها و زمانبندی اجرا کنید.
بازیابی اطلاعات
دستور دو مقدار را برمی گرداند:
- exit-code : در صورت موفقیت آمیز بودن اجرای دستور، 0 را برمی گرداند
- output : خروجی فرمان اجرا شده از راه دور را برمی گرداند
مثال: کد زیر وضعیت رابط ether1 را از دستگاه 10.10.10.1 بازیابی می کند و نتیجه را به “Log” ارسال می کند.
:local Status ([/system ssh-exec address=10.10.10.1 user=remote command=":put ([/interface Ethernet monitor [find where name=ether1] Once as-value]->\"status\")" as-value]-> "output")
:log info $Status
به دلایل امنیتی، ورود رمز عبور متن ساده مجاز نیست. برای اطمینان از اجرای ایمن فرمان از راه دور، از احراز هویت SSH PKI برای کاربران هر دو طرف استفاده کنید.
گروه کاربر و خط مشی اسکریپت اجرای دستور به مجوز تست نیاز دارد