الاتصال بالحاسوب عن بعد أمر أساسي لأي مدير نظام. فالمخدمات، المحتجزة في غرفها الخاصة، نادراً ما تزود بلوحة مفاتيح وشاشة دائمتين — بل توصل بالشبكة.
9.2.1. الدخول البعيد الآمن: SSH
صمم بروتوكول SSH (Secure SHell) مع التركيز على الأمان والوثوقية. الاتصالات عبر SSH آمنة: حيث يستوثق من الشخص الآخر، وتشفر جميع تبادلات البيانات.
يقدم SSH خدمتين لنقل الملفات. الأمر scp
هو أداة نصية يمكن استخدامها كما يستخدم cp
، إلا أن أي مسار إلى جهاز آخر يُسبَق باسم الجهاز، متبوعاً بنقطتين رأسيتين (:
).
$
scp file machine:/tmp/
أما sftp
فهو أمر تفاعلي، شبيه بالأمر ftp
. يستطيع sftp
نقل عدة ملفات في جلسة واحدة، كما يمكن التحكم بالملفات البعيدة باستخدامه (حذف، إعادة تسمية، تغيير الصلاحيات، الخ).
تستخدم دبيان OpenSSH، وهو نسخة حرة من SSH يشرف عليها مشروع OpenBSD
(نظام تشغيل حر يعتمد على النواة BSD، ويركز على الأمن) مشتقة من برنامج SSH الأصلي الذي طورته شركة SSH Communication Security Corp الفنلندية. لقد طورت هذه الشركة SSH بشكل برنامج حر في البداية، لكن قررت لاحقاً متابعة تطويره تحت رخصة احتكارية. بعد ذلك أنشأ مشروع OpenBSD المشتق OpenSSH لمتابعة صيانة نسخة حرة من SSH.
OpenSSH is split into two packages: the client part is in the openssh-client package, and the server is in the openssh-server package. The ssh meta-package depends on both parts and facilitates installation of both (apt install ssh
), while the task-ssh-server, often chosen during the initial installation, depends on the server package only.
9.2.1.1. المصادقة بالمفاتيح
في كل مرة يسجل فيها أحد دخوله عبر SSH، يطلب المخدم البعيد كلمة سر للتحقق من هوية المستخدم. هذا قد يسبب المشاكل إذا كنت تريد أتمتة الاتصال، أو كنت تستخدم أداة تتطلب الاتصال عبرSSH كثيراً. لذلك يقدم SSH نظام المصادقة بالمفاتيح.
The user generates a key pair on the client machine with ssh-keygen -t rsa
; the so generated public key is stored in ~/.ssh/id_rsa.pub
, while the corresponding private key is stored in ~/.ssh/id_rsa
. The user can then use ssh-copy-id server
to add their public key to the ~/.ssh/authorized_keys
file on the server, or, if SSH access hasn't been enabled yet, they have to ask the administrator to add their key manually.
If the private key was not protected with a “passphrase” at the time of its creation, all subsequent logins on the server will work without a password. Otherwise, the private key must be decrypted each time by entering the passphrase. Fortunately, ssh-agent
allows us to keep private keys in memory to not have to regularly re-enter the password. For this, you simply use ssh-add
(once per work session) provided that the session is already associated with a functional instance of ssh-agent
. Debian activates it by default in graphical sessions, but this can be deactivated by changing /etc/X11/Xsession.options
and commenting out use-ssh-agent
. For a console session, you can manually start the agent with eval $(ssh-agent)
.
9.2.1.2. Cert-Based Authentication
SSH keys cannot just be protected by a password (or not). An often unknown feature is that they can also be signed via certificate, both the host as well as the client keys. This approach comes with several advantages. Instead of maintaining an
authorized_keys
file per user as described in the previous section, the SSH server can be configured to trust all client keys signed by the same certificate (see also
قسم 10.2.2, “البنية التحتية للمفاتيح العامة: easy-rsa”) by using the
TrustedUserCAKeys
and
HostCertificate
directives in
/etc/ssh/sshd_config
.
TrustedUserCAKeys /etc/ssh/ssh_users_ca.pub
HostKey /etc/ssh/ssh_host_ecdsa_key
HostCertificate /etc/ssh/ssh_host_ecdsa_key-cert.pub
Vice-versa the clients can also be configured to trust the host key signed by the same authority, making it easier to maintain the known_hosts
file (even system wide via /etc/ssh/known_hosts
).
@cert-authority *.falcot.com ssh-rsa AAAA[..]
Both, public key and certificate authentication, can be used alongside each other.
9.2.1.3. استخدام تطبيقات X11 عن بعد
يسمح بروتوكول SSH بتوجيه البيانات الرسومية (جلسات ”X11“، نسبةً لاسم النظام الرسومي الأكثر انتشاراً في يونكس)؛ يحافظ المخدم عند ذلك على قناة مخصصة لهذه البيانات. على وجه الخصوص، يمكن عرض برنامج رسومي يُنَفَّذ عن بعد على مخدم X.org على الشاشة المحلية، وسوف تُؤمَّن الجلسة بالكامل (الدخل والعرض). هذه الميزة معطلة افتراضياً لأنها تسمح للتطبيقات البعيدة بالتداخل مع النظام المحلي. يمكنك تفعليها بتحديد X11Forwarding yes
في ملف ضبط المخدم (/etc/ssh/sshd_config
). أخيراً، يجب أن يطلبها المستخدم أيضاً بإضافة الخيار -X
إلى الأمر ssh
.
9.2.1.4. إنشاء الأنفاق المشفرة باستخدام توجيه المنافذ
يسمح الخياران
-R
و
-L
للأمر
ssh
بإنشاء ”أنفاق مشفرة“ بين جهازين، باستخدام التوجيه الآمن لمنفذ TCP محلي (انظر الملاحظة الجانبية
أساسيات TCP/UDP) إلى جهاز بعيد أو العكس.
ينشئ الأمر
ssh -L 8000:server:25 intermediary
جلسة SSH مع المضيف
intermediary وينصت للمنفذ المحلي 8000 (انظر
شكل 9.3, “توجيه منفذ محلي باستخدام SSH”). في كل مرة ينشأ فيها اتصالاً مع هذا المنفذ، سيفتح
ssh
اتصالاً من الحاسوب
intermediary إلى المنفذ 25 على
server، وسيربط الاتصالين معاً.
أما الأمر
ssh -R 8000:server:25 intermediary
فهو ينشئ جلسة SSH أيضاً مع الحاسوب
intermediary، لكن سوف ينصت
ssh
للمنفذ 8000 على ذلك الجهاز (انظر
شكل 9.4, “توجيه منفذ بعيد باستخدام SSH”). أي اتصال يرد إلى إلى هذا المنفذ سيجعل
ssh
يفتح اتصالاً من الجهاز المحلي إلى المنفذ 25 على
server، ويربط الاتصالين معاً.
في كلا الحالتين، يكون الاتصال مع المنفذ 25 على المضيف server، بعد أن يمر خلال نفق SSH الواصل بين الجهاز المحلي والجهاز intermediary. في الحالة الأولى، مدخل النفق هو المنفذ المحلي 8000، وتتحرك البيانات باتجاه الجهاز intermediary قبل أن تتوجه إلى server عبر الشبكة ”العامة“. أما في الحالة الثانية، فقد تبدل موقعي الدخل والخرج في النفق؛ فقد أصبح المدخل هو المنفذ 8000 على الجهاز intermediary، أما المخرج فهو على الجهاز المحلي، الذي يوجه البيانات بعدها إلى server. عملياً، إما أن يكون server هو الجهاز المحلي أو الجهاز الوسيط. في تلك الحالة سيحمي SSH الاتصال بين الطرفين.
9.2.2. استخدام سطوح المكتب الرسومية البعيدة
تسمح VNC (Virtual Network Computing – حوسبة الشبكات الظاهرية) بالوصول البعيد لسطوح المكتب الرسومية.
أكثر ما تستخدم هذه الأداة في الدعم الفني؛ حيث يرى مدير النظام الأخطاء التي يواجهها المستخدمون، ويبين لهم الطريق الصحيح لمعالجتها دون الاضطرار للوقوف جانبهم.
First, the user must authorize sharing their session. The GNOME graphical desktop environment includes that option via → (contrary to previous versions of Debian, where the user had to install and run vino
). For this to work network-manager must be managing the network used (e.g. enable the managed
mode for devices handled by ifupdown in /etc/NetworkManager/NetworkManager.conf
). KDE Plasma still requires using krfb
to allow sharing an existing session over VNC. For other graphical desktop environments, the x11vnc
or tightvncserver
commands (from the Debian packages of the same name) or tigervncserver
(tigervnc-standalone-server) serve the same purpose and provide the vnc-server virtual package; you can make either of them available to the user with an explicit menu or desktop entry.
When the graphical session is made available by VNC, the administrator must connect to it with a VNC client. GNOME has vinagre
and remmina
for that, while the KDE project provides krdc
(in the menu at → → ). There are other VNC clients that use the command line, such as xtightvncviewer
from the homonym package or xtigervncviewer
from the tigervnc-viewer Debian package. Once connected, the administrator can see what is going on, work on the machine remotely, and show the user how to proceed.