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 संरक्षण, और प्रॉक्सी फ़ॉलबैक का समर्थन करता है।

रिपॉजिटरी देखें
7433963 दिन पहलेKitploit द्वारा समीक्षित

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

TPM के लिए SSH एजेंट

ssh-tpm-agent एक ssh-agent संगत एजेंट है जो ट्रस्टेड प्लेटफ़ॉर्म मॉड्यूल (TPM) द्वारा कुंजियाँ बनाने की अनुमति देता है ताकि ssh सर्वरों के लिए प्रमाणीकरण किया जा सके।

TPM सील की गई कुंजियाँ निजी कुंजियाँ हैं जो ट्रस्टेड प्लेटफ़ॉर्म मॉड्यूल (TPM) के अंदर बनाई जाती हैं और .tpm प्रत्यय वाली फ़ाइलों में सील की जाती हैं। वे उस हार्डवेयर से बंधी होती हैं जिस पर वे उत्पन्न की गई हैं और दूसरी मशीनों पर स्थानांतरित नहीं की जा सकतीं।

यह आपको एक मूल क्लाइंट का उपयोग करने की अनुमति देता है बजाय ssh-agent और/या ssh क्लाइंट में मौजूदा PKCS11 लाइब्रेरियों को साइड लोड करने के।

यह परियोजना TPM 2.0 Key Files का उपयोग करती है जो go-tpm-keyfiles परियोजना के माध्यम से कार्यान्वित किया गया है।

विशेषताएँ

  • एक कार्यशील ssh-agent.
  • TPM पर संरक्षित ssh कुंजियाँ बनाएँ।
  • आयात के लिए दूरस्थ रूप से लपेटी गई 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 के लिए आप कमांड लाइन फ़्लैग -o या --owner-password का उपयोग करके TPM मालिक पासवर्ड निर्दिष्ट कर सकते हैं, जो पसंदीदा हैं। वैकल्पिक रूप से, आप पर्यावरण चर 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

रिमोट एंड पर हम बिना पासवर्ड के p256 ssh कुंजी बनाते हैं, और इसे क्लाइंट पक्ष से srk.pem के साथ ssh-tpm-keygen से लपेटते हैं।

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-config

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 देखें।

टूल डाउनलोड करें