Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
ssh-tpm-agent — وكيل SSH يقوم بإنشاء وإدارة مفاتيح مغلقة بـ TPM للمصادقة المرتبطة بالعتاد، ويدعم توليد المفاتيح، الاستيراد، التغليف، حماية PIN، والإرجاع الاحتياطي للوكيل. | Kitploit
أدوات/GitHubGitHub/foxboron/ssh-tpm-agent
أدوات التشفير/فك التشفيرأمن السحابةDevSecOpsأمن الأجهزةإدارة الهوية والوصول (IAM)المصادقة
GitHubfoxboron/ssh-tpm-agent

ssh-tpm-agent

وكيل SSH يقوم بإنشاء وإدارة مفاتيح مغلقة بـ TPM للمصادقة المرتبطة بالعتاد، ويدعم توليد المفاتيح، الاستيراد، التغليف، حماية PIN، والإرجاع الاحتياطي للوكيل.

عرض المستودع
743396منذ 2 أيامتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

وكيل SSH لـ TPM

ssh-tpm-agent هو وكيل متوافق مع ssh-agent يسمح بإنشاء مفاتيح بواسطة وحدة النظام الأساسي الموثوقة (TPM) للمصادقة تجاه خوادم ssh.

مفاتيح TPM المختومة هي مفاتيح خاصة تم إنشاؤها داخل وحدة النظام الأساسي الموثوقة (TPM) ومختومة في ملفات بامتداد .tpm. وهي مرتبطة بالأجهزة التي تم إنتاجها عليها ولا يمكن نقلها إلى أجهزة أخرى.

يتيح لك ذلك استخدام عميل أصلي بدلاً من الاضطرار إلى تحميل مكتبات PKCS11 الحالية جانبياً في ssh-agent و/أو عميل ssh.

يستخدم المشروع ملفات مفتاح TPM 2.0 المنفذة من خلال مشروع go-tpm-keyfiles.

الميزات

  • ssh-agent يعمل.
  • إنشاء مفاتيح ssh محمية على TPM.
  • إنشاء مفاتيح SSH ملفوفة عن بعد للاستيراد.
  • دعم رمز PIN، الحماية من هجمات القاموس من TPM تسمح باستخدام رموز PIN منخفضة الانتروبيا بدلاً من عبارات المرور.
  • تشفير جلسة TPM.
  • دعم الوكيل لخوادم ssh-agent الأخرى كاحتياطي.

دعم SWTPM

بدلاً من استخدام TPM مباشرة، يمكنك استخدام --swtpm أو export SSH_TPM_AGENT_SWTPM=1 لإنشاء هوية مدعومة من swtpm والتي سيتم تخزينها تحت /var/tmp/ssh-tpm-agent.

لاحظ أن swtpm لا يوفر خصائص أمان ويجب استخدامه فقط للاختبار.

التثبيت

أسهل طريقة لتثبيت هذه الإضافة هي تشغيل ما يلي:

root@kitploit:~
go install github.com/foxboron/ssh-tpm-agent/cmd/...@latest

بدلاً من ذلك، قم بتنزيل الملفات الثنائية المجمعة مسبقًا.

الاستخدام

root@kitploit:~
# Create key
$ ssh-tpm-keygen
Generating a sealed public/private ecdsa key pair.
Enter file in which to save the key (/home/fox/.ssh/id_ecdsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/fox/.ssh/id_ecdsa.tpm
Your public key has been saved in /home/fox/.ssh/id_ecdsa.pub
The key fingerprint is:
SHA256:NCMJJ2La+q5tGcngQUQvEOJP3gPH8bMP98wJOEMV564
The key's randomart image is the color of television, tuned to a dead channel.

$ cat /home/fox/.ssh/id_ecdsa.pub
ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBOTOsMXyjTc1wiQSKhRiNhKFsHJNLzLk2r4foXPLQYKR0tuXIBMTQuMmc7OiTgNMvIjMrcb9adgGdT3s+GkNi1g=

# Using the socket
$ ssh-tpm-agent -l /var/tmp/tpm.sock

$ export SSH_AUTH_SOCK="$(ssh-tpm-agent --print-socket)"

$ ssh [email protected]

ملاحظة: بالنسبة لـ ssh-tpm-agent، يمكنك تحديد كلمة مرور مالك TPM باستخدام علامات سطر الأوامر -o أو --owner-password، وهي المفضلة. بدلاً من ذلك، يمكنك استخدام متغير البيئة SSH_TPM_AGENT_OWNER_PASSWORD.

استيراد مفتاح موجود

مفيد إذا كنت تريد عمل نسخة احتياطية للمفتاح إلى تخزين آمن عن بُعد أثناء استخدام المفتاح يوميًا من TPM.

root@kitploit:~
# Create a key, or use an existing one
$ ssh-keygen -t ecdsa -f id_ecdsa
Generating public/private ecdsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in id_ecdsa
Your public key has been saved in id_ecdsa.pub
The key fingerprint is:
SHA256:bDn2EpX6XRX5ADXQSuTq+uUyia/eV3Z6MW+UtxjnXvU fox@framework
The key's randomart image is:
+---[ECDSA 256]---+
|           .+=o..|
|           o. oo.|
|          o... .o|
|       . + ..  ..|
|        S .   . o|
|       o * . oo=*|
|        ..+.oo=+E|
|        .++o...o=|
|       .++++. .+ |
+----[SHA256]-----+

# Import the key
$ ssh-tpm-keygen --import id_ecdsa
Sealing an existing public/private ecdsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in id_ecdsa.tpm
The key fingerprint is:
SHA256:bDn2EpX6XRX5ADXQSuTq+uUyia/eV3Z6MW+UtxjnXvU
The key's randomart image is the color of television, tuned to a dead channel.

تثبيت خدمة المستخدم

تتيح لك الخدمات المُفعَّلة بالمقبس بدء تشغيل ssh-tpm-agent عندما يحتاجه نظامك.

root@kitploit:~
# Using the socket
$ ssh-tpm-agent --install-user-units
Installed /home/fox/.config/systemd/user/ssh-tpm-agent.socket
Installed /home/fox/.config/systemd/user/ssh-tpm-agent.service
Enable with: systemctl --user enable --now ssh-tpm-agent.socket

$ systemctl --user enable --now ssh-tpm-agent.socket

$ export SSH_AUTH_SOCK="$(ssh-tpm-agent --print-socket)"

$ ssh [email protected]

دعم الوكيل

root@kitploit:~
# Start the usual ssh-agent
$ eval $(ssh-agent)

# Create a strong RSA key
$ ssh-keygen -t rsa -b 4096 -f id_rsa -C ssh-agent
...
The key fingerprint is:
SHA256:zLSeyU/6NKHGEvyZLA866S1jGqwdwdAxRFff8Z2N1i0 ssh-agent

$ ssh-add id_rsa
Identity added: id_rsa (ssh-agent)

# Print looonnggg key
$ ssh-add -L
ssh-rsa AAAAB3NzaC1yc[...]8TWynQ== ssh-agent

# Create key on the TPM
$ ssh-tpm-keygen -C ssh-tpm-agent
Generating a sealed public/private ecdsa key pair.
Enter file in which to save the key (/home/fox/.ssh/id_ecdsa):
Enter passphrase (empty for no passphrase):
Confirm passphrase:
Your identification has been saved in /home/fox/.ssh/id_ecdsa.tpm
Your public key has been saved in /home/fox/.ssh/id_ecdsa.pub
The key fingerprint is:
SHA256:PoQyuzOpEBLqT+xtP0dnvyBVL6UQTiQeCWN/EXIxPOo
The key's randomart image is the color of television, tuned to a dead channel.

# Start ssh-tpm-agent with a proxy socket
$ ssh-tpm-agent -A "${SSH_AUTH_SOCK}" &

$ export SSH_AUTH_SOCK="$(ssh-tpm-agent --print-socket)"

# ssh-tpm-agent is proxying the keys from ssh-agent
$ ssh-add -L
ssh-rsa AAAAB3NzaC1yc[...]8TWynQ== ssh-agent
ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNo[...]q4whro= ssh-tpm-agent

ssh-tpm-add

root@kitploit:~
$ ssh-tpm-agent --no-load &
2023/08/12 13:40:50 Listening on /run/user/1000/ssh-tpm-agent.sock

$ export SSH_AUTH_SOCK="$(ssh-tpm-agent --print-socket)"

$ ssh-add -L
The agent has no identities.

$ ssh-tpm-add $HOME/.ssh/id_ecdsa.tpm
Identity added: /home/user/.ssh/id_ecdsa.tpm

$ ssh-add -L
ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBJCxqisGa9IUNh4Ik3kwihrDouxP7S5Oun2hnzTvFwktszaibJruKLJMxHqVYnNwKD9DegCNwUN1qXCI/UOwaSY= test

إنشاء ولف المفتاح الخاص لجهاز العميل على خادم بعيد

على جانب العميل، قم بإنشاء مفتاح أساسي واحد تحت تسلسل هرمي. سيستخدم هذا المثال تسلسل مالك مع SRK.

يجب نقل ملف الإخراج srk.pem إلى الطرف البعيد الذي يقوم بإنشاء المفتاح. يمكن القيام بذلك كجزء من توفير العميل.

root@kitploit:~
$ tpm2_createprimary -C o -G ecc -g sha256 -c prim.ctx -a 'restricted|decrypt|fixedtpm|fixedparent|sensitivedataorigin|userwithauth|noda' -f pem -o srk.pem

في الطرف البعيد، نقوم بإنشاء مفتاح ssh p256 بدون كلمة مرور، ونلفه باستخدام ssh-tpm-keygen مع srk.pem من جانب العميل.

root@kitploit:~
$ ssh-keygen -t ecdsa -b 256 -N "" -f ./ecdsa.key
# OR with openssl
$ openssl genpkey -algorithm EC -pkeyopt ec_paramgen_curve:prime256v1 -out ecdsa.key

# Wrap with ssh-tpm-keygen
$ ssh-tpm-keygen --wrap-with srk.pub --wrap ecdsa.key -f wrapped_id_ecdsa

على جانب العميل، يمكننا فك لف wrapped_id_ecdsa إلى مفتاح قابل للتحميل.

root@kitploit:~
$ ssh-tpm-keygen --import ./wrapped_id_ecdsa.tpm -f id_ecdsa.tpm
$ ssh-tpm-add id_ecdsa.tpm

ssh-tpm-hostkey

يدعم ssh-tpm-agent أيضًا تخزين مفاتيح المضيف داخل TPM.

root@kitploit:~
$ sudo ssh-tpm-keygen -A
2023/09/03 17:03:08 INFO Generating new ECDSA host key
2023/09/03 17:03:08 INFO Wrote /etc/ssh/ssh_tpm_host_ecdsa_key.tpm
2023/09/03 17:03:08 INFO Generating new RSA host key
2023/09/03 17:03:15 INFO Wrote /etc/ssh/ssh_tpm_host_rsa_key.tpm

$ sudo ssh-tpm-hostkeys --install-system-units
Installed /usr/lib/systemd/system/ssh-tpm-agent.service
Installed /usr/lib/systemd/system/ssh-tpm-agent.socket
Installed /usr/lib/systemd/system/ssh-tpm-genkeys.service
Enable with: systemctl enable --now ssh-tpm-agent.socket

$ sudo ssh-tpm-hostkeys --install-sshd-config
Installed /etc/ssh/sshd_config.d/10-ssh-tpm-agent.conf
Restart sshd: systemd restart sshd

$ systemctl enable --now ssh-tpm-agent.socket
$ systemd restart sshd

$ sudo ssh-tpm-hostkeys
ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBCLDH2xMDIGb26Q3Fa/kZDuPvzLzfAH6CkNs0wlaY2AaiZT2qJkWI05lMDm+mf+wmDhhgQlkJAHmyqgzYNwqWY0= root@framework
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDAoMPsv5tEpTDFw34ltkF45dTHAPl4aLu6HigBkNnIzsuWqJxhjN6JK3vaV3eXBzy8/UJxo/R0Ml9/DRzFK8cccdIRT1KQtg8xIikRReZ0usdeqTC+wLpW/KQqgBLZ1PphRINxABWReqlnbtPVBfj6wKlCVNLEuTfzi1oAMj3KXOBDcTTB2UBLcwvTFg6YnbTjrpxY83Y+3QIZNPwYqd7r6k+e/ncUl4zgCvvxhoojGxEM3pjQIaZ0Him0yT6OGmCGFa7XIRKxwBSv9HtyHf5psgI+X5A2NV2JW2xeLhV2K1+UXmKW4aXjBWKSO08lPSWZ6/5jQTGN1Jg3fLQKSe7f root@framework

$ ssh-keyscan -t ecdsa localhost
# localhost:22 SSH-2.0-OpenSSH_9.4
localhost ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBCLDH2xMDIGb26Q3Fa/kZDuPvzLzfAH6CkNs0wlaY2AaiZT2qJkWI05lMDm+mf+wmDhhgQlkJAHmyqgzYNwqWY0=

تكوين ssh

من الممكن استخدام المفاتيح العامة التي تم إنشاؤها بواسطة ssh-tpm-keygen داخل تكوينات ssh.

المثال أدناه يستخدم ssh-tpm-agent ويمرر أيضًا المفتاح العام لضمان عدم تسرب جميع الهويات من الوكيل.

root@kitploit:~
Host example.com
    IdentityAgent $SSH_AUTH_SOCK

Host *
    IdentityAgent /run/user/1000/ssh-tpm-agent.sock
    IdentityFile ~/.ssh/id_ecdsa.pub

الترخيص

مرخص تحت رخصة MIT. راجع LICENSE أو https://opensource.org/licenses/MIT

تنزيل الأداة