सवाल विंडोज के लिए एसएसएच-कॉपी-आईडी के बराबर है?


क्या विंडोज के लिए एसएसएच-कॉपी-आईडी उपलब्ध कोई समकक्ष या बंदरगाह है? यही है, क्या स्थानीय मशीन से एसएसएच कुंजी को विंडोज के तहत रिमोट सर्वर में स्थानांतरित करने का कोई आसान तरीका है?

यदि यह मदद करता है, तो मैं पेजेंट का उपयोग कर रहा हूं और किट्टी (एक पुटी विकल्प) पहले से ही।


46
2018-01-20 18:34


मूल




जवाब:


एसएसएच-कॉपी-आईडी एक बहुत ही सरल लिपि है जो विंडोज़ के तहत दोहराने के लिए बहुत आसान होनी चाहिए।

यदि आप सभी पैरामीटर हैंडलिंग, त्रुटि प्रबंधन, और इसी तरह से अनदेखा करते हैं, तो ये एसएसएच-कॉपी-आईडी से दो कमांड हैं जो वास्तव में अधिकांश समय काम कर रहे हैं।

GET_ID="cat ${ID_FILE}"
{ eval "$GET_ID" ; } | ssh ${1%:} "umask 077; test -d .ssh || mkdir .ssh ; cat >> .ssh/authorized_keys" || exit 1

पुटी टूल्स का उपयोग करना इस तरह का कमांड बराबर होना चाहिए (परीक्षण नहीं किया जाना चाहिए)।

type  public_id | plink.exe username@hostname "umask 077; test -d .ssh || mkdir .ssh ; cat >> .ssh/authorized_keys"

यदि आप सभी एक ही त्रुटि प्रबंधन करना चाहते हैं, और स्वचालित कुंजी स्थान, मुझे यकीन है कि विंडोज के तहत एक स्क्रिप्ट लिखना बहुत कठिन होगा, लेकिन निश्चित रूप से संभव है।


24
2018-01-20 20:09



धन्यवाद! मैं इसे पहले काम नहीं कर सका; मुझे वापस "पहुंच से वंचित" त्रुटियां मिल रही थीं, लेकिन मुझे पासवर्ड दर्ज करने के लिए रोकना बंद नहीं था। मैंने फिर -पीडब्ल्यू स्विच का उपयोग करके पासवर्ड को फिसलने का प्रयास किया और यह काम किया। क्या आपको पता है कि पासवर्ड के माध्यम से पासवर्ड दर्ज करने के लिए रुकने का कोई तरीका है या नहीं? - Matt V.
पासवर्ड प्रमाणीकरण और लिंक के बारे में वास्तव में निश्चित नहीं है। जब भी मैं वास्तव में इसका उपयोग करता हूं, मेरे पास पहले से ही सिस्टम पर मेरी कुंजी है, और मेरे पास पैगेंट चल रहा है। - Zoredache
plink.exe -pw password काम करता है। अगर आपको पता है कि एसएस / अधिकृत_की मौजूद है तो कमांड बस है type id_rsa.pub | plink.exe -ssh user@host -pw password "cat >> .ssh/authorized_keys" - KCD
@ केसीडी अगर यह पर्याप्त है .ssh/ निर्देशिका मौजूद है। >> फिर रीडायरेक्शन फ़ाइल बनायेगा यदि यह अस्तित्व में नहीं है। - pabouk


एसएसएच-कॉपी-आईडी कुछ चीजें करता है (पढ़ें मैन पेज विवरण के लिए), लेकिन यह सबसे महत्वपूर्ण बात यह है कि आपकी स्थानीय सार्वजनिक कुंजी फ़ाइल की सामग्री को दूरस्थ फ़ाइल में अधिकृत_कीज़ कहा जाता है।

  • आप पाठ संपादक के साथ कुंजी फ़ाइल खोलकर और किट्टी टर्मिनल में सामग्री चिपकाकर इसे स्वयं कर सकते हैं।
    echo 'long_line_with_contents_of_public_key_file' >> .ssh/authorized_keys

  • वैकल्पिक रूप से, आप फ़ाइल का उपयोग कर अपलोड कर सकते हैं WinSCP (जो एसएफटीपी, या एसपीपी को फॉलबैक के रूप में उपयोग करता है) और बदसूरत प्रतिलिपि / चिपकाने के बिना, मेरे पिछले सुझाव के समान कुछ करता है।
    cat id_rsa.pub >> .ssh/authorized_keys
    जहां id_rsa.pub आपके द्वारा अपलोड की गई सार्वजनिक कुंजी का फ़ाइल नाम है।


14
2018-01-20 18:55





इन उत्तरों ने मेरी मदद नहीं की। मुझे वास्तव में किसी भी पागल स्क्रिप्ट की आवश्यकता नहीं थी। मैंने गिट बैश में अपनी क्लाइंट मशीन पर एक सार्वजनिक कुंजी बनाई थी और इसे एक वीपीएस में कॉपी करने की कोशिश कर रहा था।

अपनी सार्वजनिक कुंजी बनाने के बाद, कुंजी को "(जो भी फ़ोल्डर आपने शुरू किया था) /। Ssh / id_rsa.pub" के रूप में संग्रहीत किया जाना चाहिए "

तो इस आदेश का प्रयोग करें:
cat ~/.ssh/id_rsa.pub | ssh user@123.45.67.89 "cat >> ~/.ssh/authorized_keys"  कहा पे user आपका उपयोगकर्ता नाम (कभी-कभी "रूट", या जो कुछ भी आपने सेट किया हो), और प्रतिस्थापित करें 123.45.67.89 आपकी मशीन / होस्ट / वीपीएस के आईपी पते के साथ।

अगर निर्देशिका .ssh मेजबान मशीन पर अभी तक नहीं बनाया गया है, इस छोटे बदलाव का उपयोग करें:
cat ~/.ssh/id_rsa.pub | ssh user@123.45.56.78 "mkdir ~/.ssh; cat >> ~/.ssh/authorized_keys"


14
2018-03-21 11:53



इच्छा है कि मेरे पास और वोट होंगे! एक लाइनर के लिए! - patricktokeeffe


ज़ोरर्डैच के जवाब से प्रेरित, मैंने स्क्रिप्ट का एक गुच्छा बनाया है जो विंडोज संस्करण हैं। हालांकि वे सभी झुकाव पर निर्भर करते हैं। कृपया यहां एक नज़र डालें

https://github.com/VijayS1/Scripts/blob/master/ssh-copy-id/

मेरे पास एक winscp स्क्रिप्ट भी है जिसका उपयोग किसी अन्य उत्तर के अनुसार किया जा सकता है। :) रीडेमे से उद्धरण:

अब तक प्रयास किए गए तरीकों:

  • डॉस (.cmd) - सफलता
    • usage: .\Scriptname test@example.com password [identity file]
  • वीबीएस (.vbs) - सफलता
    • usage: .\Scriptname /i:idtest.pub user@example.com /p:password
  • पावरहेल (.ps1) - सफलता
    • usage: .\Scriptname -i idtest.pub user@example.com password 
  • mremoteNG (ext ऐप) - सफलता
    • होस्ट का चयन करें, राइट क्लिक करें, बाहरी टूल्स, स्क्रिप्टनाम का चयन करें
  • विनएससीपी स्क्रिप्ट (.bat) - सफलता
    • # "WinSCP.com" /script=".\Scriptname" /parameter "user[:password]@example.com" "id_rsa.pub" [/log=".\copyssh.log]" 

4
2018-01-27 13:31



ये बहुत प्यारे हैं - Pred


विंडोज 7 में एक ssh.exe है

यहां मेरे लिए क्या काम किया गया है:

1. पहचान बनाएं (विंडोज़ पर)

c:\>ssh-keygen

इसने होम निर्देशिका में एक पहचान फ़ाइल बनाई। मैंने सार्वजनिक कुंजी का नाम "id_rsa" में बदल दिया

2. एसएसएच का उपयोग कर फ़ाइल को लक्षित लिनक्स सिस्टम में कॉपी करेंआभार से https://serverfault.com/users/984/zoredache उसके जवाब के लिए

c:\>ssh user@lnxhost "umask 077; test -d .ssh || mkdir .ssh ; cat >> .ssh/authorized_keys || exit 1" < \\path_to_where_the_file_was_generated_from_ssh_key_gen\id_rsa.pub

नोट: किसी कारण से पाइपिंग मेरे लिए काम नहीं करती है:

# this should work but it didn't work for me 
type file | ssh user@lnxhost "cat >> /tmp/t.txt"

3. लिनक्स पर फ़ाइल को सही करें विंडोज़ पर id_rsa.pub फ़ाइल multiline है जहां लिनक्स इसे एक पंक्ति में अपेक्षा करता है ताकि हमें इसे थोड़ा सा सही करना पड़े। लिनक्स में लॉग इन करें और फ़ाइल खोलें:

vi ~/.ssh/authorized_keys

उदाहरण के लिए:

---- BEGIN SSH2 PUBLIC KEY ----
Comment: "2048-bit RSA, user@winhost"
AAAAB3NzaC1yc2EAAAABIwAAAQEAnvYlVooXGoj3+7huZBUqf4wj57r25SHCKiiShyla33
5flX7Rsmb4meExpdh2NzfzffG15xl1wo0xBZ3HdZdqF2GUniEcNbtVjS1FKzQwPfsYPHMC
Y58qT0U2ZgK1zsXj2o0D2RWrCv3DFFfwUgNyZRYN2HK32umY6OmGSOVuJvIKhT+X6YaCVy
ax3CHv2ByB2OTBl9mh4nrwYAVXToT+X2psBE+MKB5R85lrUGkl3GtymTk10Dvf5O80exdT
LFRMvkCA5RAIZgvxMk/bbNaH/0UHQoctX9oaDeKGWUPfVaknFBQdU9009+lK/ocAlKVNHE
Qkw+1wuV6dFoT1/hngSw==
---- END SSH2 PUBLIC KEY ----

बन जाना चाहिए

ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAnvYlVooXGoj3+7huZBUqf4wj57r25SHCKiiShyla335flX7Rsmb4meExpdh2NzfzffG15xl1wo0xBZ3HdZdqF2GUniEcNbtVjS1FKzQwPfsYPHMCY58qT0U2ZgK1zsXj2o0D2RWrCv3DFFfwUgNyZRYN2HK32umY6OmGSOVuJvIKhT+X6YaCVyax3CHv2ByB2OTBl9mh4nrwYAVXToT+X2psBE+MKB5R85lrUGkl3GtymTk10Dvf5O80exdTLFRMvkCA5RAIZgvxMk/bbNaH/0UHQoctX9oaDeKGWUPfVaknFBQdU9009+lK/ocAlKVNHEQkw+1wuV6dFoT1/hngSw== user@winhost

4. इसका परीक्षण करें

c:\>ssh user@lnxhost "ls -al /tmp/"

यह पासवर्ड मांगे बिना / tmp की सामग्री सूचीबद्ध करनी चाहिए।


4
2018-04-08 19:20



 चरण 3 के लिए। सुधारना authorized_keys एकल लाइनों के लिए मुझे बस चाहिए! - patricktokeeffe
खुश है कि यह आपकी मदद की - जवाब देने के लिए :) - Deian


यदि आप उपयोग कर रहे हैं cmder (या msysgit / mingw जिसमें scp और ssh है), मैंने अभी इसके लिए एक साधारण पायथन लिपि लिखी है। इसे यहां पर देख जा सकता है: https://gist.github.com/ceilfors/fb6908dc8ac96e8fc983

नमूना उपयोग: पायथन ssh-copy-id.py उपयोगकर्ता @ रिमोट मशीन।

स्क्रिप्ट चलाने पर पासवर्ड संकेत दिया जाएगा।


0
2017-07-03 15:01



इसके लिए cmder की आवश्यकता क्यों है? - user57411
@ user57411 इसे cmder की आवश्यकता नहीं है, इसके लिए scp और ssh कमांड की आवश्यकता है। - ceilfors


मैंने क्या किया, मेरे Win10 पर CygWin, लिनक्स से कनेक्ट (उत्तर के आधार पर):

- नोट: बिल्ली का उपयोग करके, यह सिग्विन पथ को स्वचालित रूप से हल करेगा, साथ ही साइगविन-लिनक्स-फ़ोल्डर-संरचना का उपयोग कर किसी भी सिग्विन कमांड को हल करेगा

1. added c:\cygwin\bin to the environment's Path variable
2. starting cmd.exe (windows commandline)
3. > ssh-keygen -t rsa   (just pressing enter till done)
4. > cat ~/.ssh/id_rsa.pub | ssh user@server "umask 077; test -d ~/.ssh || mkdir ~/.ssh ; cat >> ~/.ssh/authorized_keys"
5. ..enter server password
6. > ssh user@server (testing, not beeing asked for password)

0
2017-09-06 06:19