คีย์ Windows 10 SSH


112

ฉันมีช่วงเวลาที่ยากลำบากในการทำให้คีย์ SSH ของฉันทำงานหลังจากติดตั้ง Windows 10 วิธีปกติคือสร้างมันและโยนลงในบัญชีของผู้ใช้ภายใต้. ssh โฟลเดอร์นี้ไม่สามารถใช้ได้ใน Windows 10

มีใครเจอปัญหานี้อีกไหม ฉันต้องมีคีย์ SSH 3 อันสำหรับ repos ที่แตกต่างกันและนี่เป็นสิ่งที่ทำให้ฉันรู้สึกดีขึ้น


2
Windows 10 ซ่อนโฟลเดอร์ dot หรือไม่
Leland Barton

ไม่นั่นคือสิ่งที่ฉันคิดไว้ในตอนแรกเช่นกัน แต่มันได้เพิ่มบางส่วนตั้งแต่การติดตั้ง
Rudenate3

2
กรุณาย้ายคำถามของคุณSuper User มันนอกประเด็นที่นี่
Martin Prikryl

3
@MartinPrikryl เนื่องจากการเข้ารหัสบน Linux จำนวนมากการใช้ Github และอื่น ๆ เกี่ยวข้องกับคีย์ ssh และ .ssh ฉันขอยืนยันว่ามันเป็นหัวข้อสำหรับ Stackoverflow
haziz

2
ฉันเห็นด้วยกับมาร์ติน คำถามเกี่ยวกับการเขียนโปรแกรมคือคำถามเกี่ยวกับการเขียนโปรแกรมไม่ใช่คำถามใด ๆ ที่โปรแกรมเมอร์อาจถาม
Bacon Bits

คำตอบ:


131
  1. เปิดบรรทัดคำสั่งของ windows (พิมพ์ "cmd" ในช่องค้นหาแล้วกด Enter)
  2. มันจะเริ่มต้นไปยังโฟลเดอร์ที่บ้านของคุณเพื่อให้คุณไม่จำเป็นต้องcdไปที่ที่แตกต่างกันอย่างใดอย่างหนึ่ง
  3. ประเภท ssh-keygen
  4. ทำตามคำแนะนำและคุณก็พร้อมที่จะไป
  5. คีย์ ssh ของคุณควรถูกเก็บไว้ที่ไดเร็กทอรีที่เลือกค่าเริ่มต้นคือ: /c/Users/YourUserName/.ssh/id_rsa.pub

ps: หากคุณติดตั้ง git ด้วยการรวม bash (เช่นฉัน) ให้เปิด "Git Bash" แทน "cmd" ในขั้นตอนแรก


36
สิ่งนี้ดูดียกเว้นว่าจะใช้ไม่ได้ ไม่มีคำสั่งssh-keygen
roberto tomás

10
ด้วยเหตุผลบางอย่างฉันต้องรันssh-keygenคำสั่งใน git-bash shell แทน cmd-shell
Olian04

6
เพื่อที่คุณสามารถใช้ Git Bash sheel หรือ git cmd คุณไม่สามารถใช้ Windows cmd
Pavan T

6
ณ ธันวาคม 2018 ก็ทำงานออกจากกล่องใน Win 10 สำหรับฉัน
Urs

1
@Suncatcher ใช่ สำหรับการเข้าสู่ระบบ Github, DigitalOcean และอื่น ๆ คุณต้องมีคีย์สาธารณะซึ่งอยู่ใน "id_rsa.pub" ในโฟลเดอร์เดียวกัน เปิดด้วยโปรแกรมแก้ไขข้อความเช่น notepad และคัดลอกและวางทุกที่ที่คุณต้องการเพิ่มคีย์ SSH
Goose

57

อัปเดต 2019-04-07: วันนี้ฉันทดสอบด้วย windows 10 เวอร์ชันใหม่ (สร้าง 1809, "การอัปเดตเดือนตุลาคม 2018") และไม่เพียง แต่ไคลเอนต์ SSH แบบเปิดเท่านั้นที่ไม่ได้อยู่ในเบต้าอีกต่อไปเนื่องจากมีการติดตั้งแล้ว ดังนั้นสิ่งที่คุณต้องทำคือสร้างคีย์และตั้งค่าไคลเอนต์ของคุณให้ใช้ SSH แบบเปิดแทนสีโป๊ว (เลขหน้า):

  1. เปิดพรอมต์คำสั่ง (cmd)
  2. ป้อนssh-keygenและกด Enter
  3. กด Enter เพื่อตั้งค่าทั้งหมด ตอนนี้คีย์ของคุณถูกบันทึกใน c: \ Users \ .ssh \ id_rsa.pub
  4. เปิดไคลเอ็นต์คอมไพล์ของคุณและตั้งค่าให้ใช้ SSH แบบเปิด

ฉันทดสอบกับ Git Extensions และ Source Tree และทำงานร่วมกับ repo ส่วนตัวของฉันใน GitHub หากคุณใช้ Windows เวอร์ชันก่อนหน้าหรือต้องการไคลเอนต์กราฟิกสำหรับ SSH โปรดอ่านด้านล่าง

2018-06-04 UDPATE:

ใน Windows 10 เริ่มต้นด้วยเวอร์ชัน 1709 (win + R และพิมพ์winverเพื่อค้นหาหมายเลขรุ่น) Microsoft กำลังเปิดตัวไคลเอ็นต์และเซิร์ฟเวอร์ OpenSSH รุ่นเบต้า ในการสร้างคีย์คุณจะต้องติดตั้งเซิร์ฟเวอร์ OpenSSH โดยให้ทำตามขั้นตอนต่อไปนี้:

  1. เปิดเมนูเริ่ม
  2. พิมพ์ "คุณสมบัติเสริม"
  3. เลือก "เพิ่มคุณสมบัติเสริม"
  4. คลิก "เพิ่มคุณลักษณะ"
  5. ติดตั้ง "Open SSH Client"
  6. รีสตาร์ทคอมพิวเตอร์

ตอนนี้คุณสามารถเปิดพรอมต์และssh-keygenไคลเอนต์จะได้รับการยอมรับจาก windows ฉันยังไม่ได้ทดสอบสิ่งนี้ หากคุณไม่มี windows 10 หรือไม่ต้องการใช้เบต้าให้ทำตามคำแนะนำด้านล่างเกี่ยวกับวิธีใช้ผงสำหรับอุดรู


ssh-keygenไม่ได้มาพร้อมกับ windows วิธีสร้างคีย์ ssh ด้วย Putty มีดังนี้

  1. ติดตั้งสีโป๊ว
  2. เปิด PuttyGen
  3. ตรวจสอบประเภทของคีย์และจำนวนไบต์ที่จะใช้พารามิเตอร์ PuttyGen
  4. เลื่อนเมาส์ไปที่แถบความคืบหน้า สร้างคีย์ด้วยการป้อนข้อมูลเมาส์
  5. ตอนนี้คุณสามารถกำหนดข้อความรหัสผ่านและบันทึกคีย์สาธารณะและคีย์ส่วนตัวได้แล้ว กล่องโต้ตอบสร้างคีย์

สำหรับคีย์ openssh จำเป็นต้องมีขั้นตอนเพิ่มเติมอีกสองสามขั้นตอน:

  1. คัดลอกข้อความจากกล่องข้อความ "คีย์สาธารณะสำหรับวาง" และบันทึกเป็น "id_rsa.pub"
  2. หากต้องการบันทึกคีย์ส่วนตัวในรูปแบบ openssh ให้ไปที่ Conversions-> ส่งออกคีย์ OpenSSH (หากคุณไม่ได้กำหนดรหัสผ่านระบบจะขอให้คุณยืนยันว่าคุณไม่ต้องการรหัสผ่าน) เมนูสำหรับการแปลงคีย์เป็นรูปแบบ OpenSSH
  3. บันทึกเป็น "id_rsa"

ตอนนี้คีย์ได้รับการบันทึกแล้ว เริ่มpagentและเพิ่มคีย์ส่วนตัวที่นั่น (ไฟล์ ppk ในรูปแบบของ Putty) กล่องโต้ตอบแป้นเลขหน้า

โปรดจำไว้ว่าpagentต้องรันเพื่อให้การตรวจสอบสิทธิ์ทำงาน


6
ssh-keygen รวมอยู่ใน windows 10 ไม่แน่ใจว่าเวอร์ชันใดใน "Manage Optional Features"
sebbu

1
@sebbu อันที่จริงตอนนี้บน windows 10 คุณสามารถติดตั้งเบต้าของ Open SSH Server ใน "จัดการคุณสมบัติเสริม" และนั่นจะทำให้คุณได้รับ ssh-keygen พร้อมกับสิ่งอื่น ๆ แต่มันไม่ได้มาติดตั้งและหาได้ไม่ยาก ฉันจะอัปเดตคำตอบของฉัน
franksands

1
@KarlMorrison pagent เป็น gui เพื่อดำเนินการตรวจสอบสิทธิ์ ssh โดยปกติจะอยู่ในเมนูเริ่ม
franksands

1
คุณไม่จำเป็นต้องติดตั้ง Open SSH Server คุณลักษณะ Open SSH Client ประกอบด้วย ssh-keygen
Onots

1
@Onots ฉันทดสอบด้วย windows 10 เวอร์ชันใหม่ (อัปเดตเดือนตุลาคม 2018) และไม่เพียง แต่เปิดไคลเอนต์ ssh เท่านั้น แต่ยังติดตั้งมาแล้ว: D ฉันจะอัปเดตคำตอบของฉัน
franksands

31

WINDOWS: หากคุณติดตั้ง git สำหรับ windows ให้ไปที่โฟลเดอร์

ใส่คำอธิบายภาพที่นี่

ดูในไดเร็กทอรี bin มีไฟล์ sh.exe เรียกใช้

ใส่คำอธิบายภาพที่นี่

จากนั้นพิมพ์:

ssh-keygen -t rsa -C "อีเมลของคุณที่นี่"

ทำตามคำแนะนำจากนั้นพิมพ์:

แมว ~ / .ssh / id_rsa.pub | คลิป

มันคัดลอกคีย์ไปยังคลิปบอร์ดของคุณ ตอนนี้คุณสามารถวางคีย์สาธารณะนั้นลงในฝั่งเซิร์ฟเวอร์ได้


13
  1. เปิดบรรทัดคำสั่งของ windows (พิมพ์ "cmd" ในช่องค้นหาแล้วกด Enter)
  2. มันจะเริ่มต้นไปยังโฟลเดอร์ที่บ้านของคุณเพื่อให้คุณไม่จำเป็นต้องcdไปที่ที่แตกต่างกันอย่างใดอย่างหนึ่ง
  3. ประเภท mkdir .ssh

9

คำเตือน:หากคุณกำลังบันทึกคีย์ของคุณภายใต้C: /User/username/.ssh (ตำแหน่งเริ่มต้น) ตรวจสอบให้แน่ใจว่าได้สำรองคีย์ของคุณไว้ที่ใดที่หนึ่ง (เช่นตัวจัดการรหัสผ่านของคุณ)

หลังจากการอัปเดต Windows 10 ล่าสุด (เวอร์ชัน 1607) โฟลเดอร์. ssh ของฉันว่างเปล่า นี่คือจุดที่คีย์ของฉันอยู่มาตลอด แต่ Windows ตัดสินใจที่จะลบออกเมื่ออัปเดต

โชคดีที่ฉันได้สำรองคีย์ของฉันไว้ ... แต่ ... ฉันพนันได้เลยว่ามีบางคนที่จะคืนค่าพีซีของพวกเขาในวันนี้


แอพส่วนใหญ่คาดหวังให้คุณเก็บกุญแจไว้ที่ไหน?
wcochran

3
อาจอยู่ในโฟลเดอร์ที่ windows สุ่มลบเมื่ออัพเกรด windows 10?
Andrew

8

ฉันใช้ Microsoft Windows 10 Pro เวอร์ชัน 10.0.17763 Build 17763 และฉันเห็นโฟลเดอร์. ssh ของฉันได้อย่างง่ายดายที่ C: \ Users \ jrosario \ .ssh โดยไม่ต้องแก้ไขสิทธิ์หรืออะไรเลย (แม้ว่าใน File Explorer ฉันเลือก "แสดงไฟล์โฟลเดอร์และไดรฟ์ที่ซ่อนอยู่"): ใส่คำอธิบายภาพที่นี่

คีย์จะถูกเก็บไว้ในไฟล์ข้อความชื่อ known_hosts ซึ่งมีลักษณะประมาณนี้: ใส่คำอธิบายภาพที่นี่


5

ฉันพบข้อยกเว้นที่น่าสังเกตว่าใน Windows 10 การใช้เส้นทางที่อธิบายไว้จะเขียนไฟล์ไปยังโฟลเดอร์เท่านั้นหากชื่อไฟล์ที่ไม่ได้ระบุไว้ในตัวสร้าง ssh-keygen

การตั้งชื่อคีย์แบบกำหนดเองทำให้ไฟล์ที่มีคีย์สาธารณะและคีย์ส่วนตัว RSA ไม่ถูกเขียนลงในโฟลเดอร์

  • เปิดหน้าต่างคำสั่ง
  • ประเภท ssh-keygen
  • ปล่อยชื่อไฟล์ว่างไว้เพียงกด return
  • ตั้งรหัสผ่านของคุณ
  • สร้างไฟล์สำคัญของคุณ ตอนนี้พวกเขาจะมีอยู่จริง และถูกเก็บไว้ในc:/Users/YourUserName/.ssh/

( ใช้ Admin Command Line และ Windows 10 Pro )


@Braineeee ลบ. สิ่งนี้จะไม่เขียนทับคีย์ของคุณหากขณะนี้มีคีย์อยู่ในปลายทางจากนั้นในหน้าต่างบรรทัดคำสั่งระบบจะถามคุณว่าคุณต้องการเขียนทับคีย์เหล่านี้หรือไม่ ปุ่มอื่น ๆ ในโฟลเดอร์เดียวกันจะไม่ได้รับผลกระทบ ฉันรู้ว่าหลังจากอ่านความคิดเห็นของคุณแล้วฉันได้ทำการทดสอบและพบว่าเป็นเช่นนั้น
Martin

คุณเคยคิดหรือไม่ว่าทำไม?
Damainman

@ Damainman น่าเสียดายที่ฉันยังไม่มีโอกาสได้สำรวจสิ่งนี้มากกว่านี้จึงไม่:-/
Martin

1
ขอบคุณ @Martin ที่คุณช่วยชีวิตฉันไว้ ฉันสามารถสร้างไฟล์ที่มีชื่ออื่น เราต้องจัดเตรียมตัวคั่นเส้นทางในแบบยูนิกซ์! สิ่งต่อไปนี้ใช้ได้ผลสำหรับฉัน ssh-keygen -t ed25519 -C "รหัส Github ของฉัน" ป้อนไฟล์ที่จะบันทึกคีย์ (C: \ Users \ bilix / .ssh / id_ed25519): c: \ users \ bilix \ .ssh \ id_ed25519_github
Prakash P

@PrakashP ยินดีช่วย!
Martin

4

สร้างคีย์ส่วนตัว / สาธารณะ:

  1. เปิด terminal ขึ้น ( git bash, PowerShell, cmd.exeฯลฯ )
  2. พิมพ์ ssh-keygen
  3. กด Enter เพื่อบันทึกไฟล์เริ่มต้น ( ~/.ssh/id_rsa)
  4. กด Enter สำหรับข้อความรหัสผ่านเริ่มต้น (ไม่มีข้อความรหัสผ่าน)
  5. กด Enter อีกครั้ง
  6. ดูผลลัพธ์และตรวจสอบให้แน่ใจว่าRSAเป็น3072หรือสูงกว่า

ตอนนี้คุณได้สร้างคู่คีย์ส่วนตัว / สาธารณะแล้ว

สำหรับ GIT ที่สำคัญจะต้องมีความแข็งแรงของ2048จะต้องตั้งอยู่ในผู้ใช้.sshไดเรกทอรีและจะเรียกว่าและid_rsa เมื่อวางคีย์ที่ใดก็ได้อย่าลืมใช้โปรแกรมที่ไม่เพิ่มบรรทัดใหม่เช่น VIMid_rsa.pub


2

ในที่สุดฉันก็สามารถใช้งานได้โดยเปิดบรรทัดคำสั่งด้วย "Run a Administrator" แม้ว่าฉันจะเป็นผู้ดูแลระบบอยู่แล้วและสามารถสร้างไดเร็กทอรีด้วยตนเองได้


1

หากคุณมี Windows 10 พร้อมกับไคลเอนต์ OpenSSH คุณอาจสร้างคีย์ได้ แต่คุณจะมีปัญหาในการคัดลอกไปยังกล่อง Linux เป้าหมายเนื่องจากคำสั่ง ssh-copy-id ไม่ได้เป็นส่วนหนึ่งของชุดเครื่องมือไคลเอ็นต์

มีปัญหานี้ฉันได้เขียนฟังก์ชัน PowerShell ขนาดเล็กเพื่อแก้ไขปัญหานี้ซึ่งคุณได้เพิ่มลงในโปรไฟล์ของคุณ

function ssh-copy-id([string]$userAtMachine, [string]$port = 22) {   
    # Get the generated public key
    $key = "$ENV:USERPROFILE" + "/.ssh/id_rsa.pub"
    # Verify that it exists
    if (!(Test-Path "$key")) {
        # Alert user
        Write-Error "ERROR: '$key' does not exist!"            
    }
    else {  
        # Copy the public key across
        & cat "$key" | ssh $userAtMachine -p $port "umask 077; test -d .ssh || mkdir .ssh ; cat >> .ssh/authorized_keys || exit 1"      
    }
}

คุณสามารถรับส่วนสำคัญได้ที่นี่

ฉันมีข้อมูลสั้น ๆ เกี่ยวกับเรื่องนี้ที่นี่


0

นอกจากนี้คุณสามารถลอง (สำหรับ Windows 10 Pro) เรียกใช้ Powershell ในฐานะผู้ดูแลระบบและพิมพ์ ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.