git - คีย์โฮสต์เซิร์ฟเวอร์ไม่ได้แคช


101

ฉันพยายามผลักดันการเปลี่ยนแปลงจาก repo ในพื้นที่ของฉันไปเป็น repo ระยะไกล เมื่อฉันพิมพ์:

git push origin

ฉันได้รับข้อผิดพลาดต่อไปนี้:

The server's host key is not cached in the registry. You
have no guarantee that the server is the computer you
think it is.
The server's rsa2 key fingerprint is:
ssh-rsa 2048 xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx
Connection abandoned.
fatal: The remote end hung up unexpectedly

ฉันจะแก้ปัญหานี้ได้อย่างไร? ฉันใช้คอมไพล์จากบรรทัดคำสั่งใน Windows 7

แก้ไข

เมื่อฉันพยายามทำ ssh

ssh user@hostname

ฉันได้รับข้อผิดพลาดต่อไปนี้:

Could not create directory '/c//%HOMEDRIVE%%HOMEPATH%/.ssh'.
percent_expand: unknown key %H

อย่างไรก็ตามมันจะไม่สร้างไดเร็กทอรีเนื่องจากพา ธ ไม่ถูกต้อง จะแก้ไขได้อย่างไร?

@eckes: แก้ไข 2

My Home ตั้งค่า%HOMEDRIVE%%HOMEPATH%เป็นถูกต้องหรือไม่


2
ดูเหมือนว่า$HOMEตั้งค่าไม่ถูกต้อง ลองตั้งค่าHOMEตัวแปรสภาพแวดล้อมบน windows โดยใช้My Computer-> คลิกขวา -> Properties-> Tab Advanced-> ปุ่มEnvironment Variables
เริ่ม

1
ฉันไม่ใช่คนที่ชอบใช้ windows แต่มันทำให้ฉันแปลกที่หลังจากนั้น/c//(น่าจะเป็นอักษรระบุไดรฟ์) คุณยังมี%HOMEDRIVE%... คุณอาจสามารถช่วยตัวเองได้บ้างด้วยการเล่นซอกับคุณค่าของตัวเองและสะท้อนมันออกมา?
Cascabel

1
ขยายHOMEDRIVEและHOMEPATHตั้งค่าHOMEเป็นค่าผลลัพธ์ ...
เช่น

คำตอบ:


54

ข้อความนี้หมายความว่าคีย์โฮสต์ของoriginไม่มีอยู่ในไฟล์โฮสต์ที่เชื่อถือได้ของคุณ

ในการแก้ไขปัญหานี้ให้เปิดการเชื่อมต่อ SSH ธรรมดาoriginและ SSH จะถามคุณว่าคุณต้องการเชื่อถือโฮสต์ระยะไกล (จากคอนโซล Git) หรือไม่:

$ ssh 127.0.0.1
The authenticity of host '127.0.0.1 (127.0.0.1)' can't be established.
RSA key fingerprint is <FINGERPRINT>.
Are you sure you want to continue connecting (yes/no)?

หากคุณเชื่อถือโฮสต์ระยะไกล (เช่นประเภทyes) SSH จะเพิ่มคีย์ลงในรายการโฮสต์ที่รู้จัก

หลังจากนั้นคุณควรจะสามารถทำgit push originไฟล์.

อีกทางเลือกหนึ่งคือคุณสามารถเพิ่มคีย์ของoriginถึงได้ด้วยตนเอง.ssh/known_hostsแต่สิ่งนี้ต้องการให้คุณปฏิบัติตามรูปแบบของknown_hostsไฟล์ตามที่อธิบายไว้ในหน้า man ของsshd(ส่วนAUTHORIZED_KEYS FILE FORMAT )


4
ฉันได้รับข้อความเดียวกันเมื่อทำการพุชไปที่ github แต่ฉันสามารถ ssh ไปยัง github ได้และฉันมี github.com ในknown_hostsไฟล์ของฉัน
Magnus Lindhe

1
ดูคำตอบด้านล่างในกรณีนี้
Nikita Koksharov

3
คุณสามารถใช้ PuTTY บน windows เพื่อวัตถุประสงค์เดียวกันแทนไคลเอนต์ SSH บรรทัดคำสั่ง
brianmearns

1
ตรวจสอบให้แน่ใจว่าชื่อโฮสต์เหมือนกันทุกประการ ตัวอย่างเช่นหากคุณติดตั้งคอมไพล์ไว้ในเครื่องและใช้ชื่อ 'home.mydomain.com' เป็นรีโมต แต่เก็บคีย์โดยใช้ผงสำหรับอุดรูเพื่อเชื่อมต่อกับ 'localhost' ซึ่งจะใช้ไม่ได้ คุณต้องเชื่อมต่อกับชื่อโฮสต์ใน url ระยะไกลของคุณ
Jason Goemaat

สำหรับฉันคงพยายามเชื่อมต่อกับผงสำหรับอุดรูไปยังเซิร์ฟเวอร์ ให้บอกว่า git url คือ ssh: //git@example.ex.com: 222 / something / shop.git ดังนั้นฉันจึงป้อนชื่อโฮสต์ในฟิลด์สีโป๊ว example.ex.com และพอร์ต 222 จากนั้นการเชื่อมต่อล้มเหลว แต่ฉันเดาว่ามันเพิ่มนิ้วเข้าไป พิมพ์ในที่ที่ต้องการ ฉันไม่เข้าใจว่ามันเพิ่มที่ไหนเพราะในไดเรกทอรีบ้านของฉัน known_hosts - ไฟล์ไม่ได้รับผลกระทบเมื่อฉันลบคีย์เก่า
Darius.V

157

สำหรับผู้ที่กำลังตั้งค่า MSYS Git บน Windows โดยใช้ PuTTY ผ่านพรอมต์คำสั่งมาตรฐานวิธีเพิ่มโฮสต์ในแคชของ PuTTY คือการเรียกใช้

> plink.exe <host>

ตัวอย่างเช่น:

> plink.exe codebasehq.com

The server's host key is not cached in the registry. You
have no guarantee that the server is the computer you
think it is.
The server's rsa2 key fingerprint is:
ssh-rsa 2048 2e:db:b6:22:f7:bd:48:f6:da:72:bf:59:d7:75:d7:4e
If you trust this host, enter "y" to add the key to
PuTTY's cache and carry on connecting.
If you want to carry on connecting just once, without
adding the key to the cache, enter "n".
If you do not trust this host, press Return to abandon the
connection.
Store key in cache? (y/n)

เพียงตอบyแล้ว Ctrl + C ส่วนที่เหลือ

ตรวจสอบลายนิ้วมือแม้ว่า คำเตือนนี้มีเหตุผลที่ดี ลายนิ้วมือสำหรับบริการ git บางอย่าง (โปรดแก้ไขเพื่อเพิ่มเติม):


15
นี่ควรเป็นคำตอบที่ได้รับการยอมรับ นี่คือสิ่งที่ข้อความแสดงข้อผิดพลาดอ้างถึง ในกรณีของฉันเมื่อฉันโคลนฉันเคยใช้ FQDN แต่ในเครื่องใหม่ของฉันฉันได้เข้าสู่ระบบโดยใช้ชื่อโดเมนท้องถิ่นแบบสั้นเท่านั้น ฉันต้องเข้าสู่ระบบผ่านผงสำหรับอุดรูหรือ plink เป็น FQDN เพื่อแคชคีย์สำหรับชื่อโฮสต์ที่ต้นทาง สามารถช่วยตรวจสอบชื่อโฮสต์ที่ใช้เป็นรีโมตได้โดยใช้ "git remote -v"
peabody

3
นอกจากนี้ยังใช้งาน PuTTY แบบโต้ตอบกับโฮสต์ที่คุณพยายามใช้งานได้อีกด้วย ตัวอย่างเช่นหากคุณพยายามโคลนที่เก็บ Github เป็นครั้งแรกบนเครื่อง Windows ใหม่ให้ใช้ PuTTY เพื่อเปิดเซสชันไปยังโฮสต์ 'github.com' ยอมรับข้อความแจ้งเกี่ยวกับความน่าเชื่อถือของเซิร์ฟเวอร์จากนั้นทำการโคลนที่ส่วน บรรทัดคำสั่งควรใช้งานได้
Jeremy McGee

1
คุณสามารถบอก MSYS git กำลังใช้งานได้plinkโดยเรียกใช้$ set | grep GIT_SSHและตรวจสอบGIT_SSH='C:\Program Files (x86)\PuTTY\plink.exe'
shuckc

2
ฉันลงเอยด้วยการเพิ่มคีย์ใน Pageant และเข้าถึงโฮสต์ด้วย Putty โดยตรง สิ่งนี้ขอให้คุณเพิ่มโฮสต์ในแคช ทำสิ่งเดียวกัน
Knossos

1
หากเก็บคอมไพล์ของคุณจะทำหน้าที่ในพอร์ต SSH กำหนดเองใช้เพื่อเลือกพอร์ตเช่น:-P plink.exe example.com -P 2222ฉันสามารถโคลนจาก github แต่ไม่ใช่จากเซิร์ฟเวอร์ส่วนตัวของฉันและสิ่งนี้ทำให้ฉันสับสนไม่สิ้นสุด
Hay

79

ลองทำ "set | grep -i ssh" จากพรอมต์ Git Bash

หากการตั้งค่าของคุณเป็นเหมือนของฉันคุณอาจมีการตั้งค่าเหล่านี้:

GIT_SSH='C:\Program Files (x86)\PuTTY\plink.exe'
PLINK_PROTOCOL=ssh
SVN_SSH='"C:\\Program Files (x86)\\PuTTY\\plink.exe"'

ฉันทำ

unset GIT_SSH
unset PLINK_PROTOCOL
unset GIT_SVN

และใช้งานได้หลังจากนั้น .. ฉันเดาว่าผงสำหรับอุดรูจะบันทึกคีย์ไว้ที่อื่นเป็น $ HOME / .ssh หรืออะไรสักอย่าง ... (ฉันยังมีปัญหาในกล่องที่ $ HOME ตั้งค่าเป็น "C: \ Users \ usrnam "แทน" / C / Users / usrnam / "

อย่างไรก็ตามระยะทางของคุณอาจแตกต่างกันไป แต่ก็แก้ไขให้ฉันได้ :-)

(อาจจะแค่ทำ GIT_SSH ที่ไม่ได้ตั้งค่าก็เพียงพอแล้ว แต่ฉันกำลังหมุน)

หมายเหตุ: หากการยกเลิกการตั้งค่าไม่ได้ผลสำหรับคุณให้ลองทำดังนี้:

set GIT_SSH=

1
"unset GIT_SSH" ใช้ได้ผลสำหรับฉัน ฉันได้ตั้งค่า Pageant / putty ไว้ก่อนหน้านี้สำหรับเซิร์ฟเวอร์อื่น แต่เมื่อฉันสร้างคีย์ใหม่โดยใช้พรอมต์ Git Bash ฉันต้องย้อนกลับ ขอบคุณสำหรับความช่วยเหลือ
supermitch

หลังจากทำตามขั้นตอนของคุณแล้วฉันได้ดำเนินการเพิ่มเติม แต่ตอนนี้ฉันได้รับข้อผิดพลาด "mac currupted mac on input" ... เคยเห็นไหม
CD Smith

2
เมื่อติดตั้งคอมไพล์คุณสามารถเลือกที่จะไม่ตั้งค่าตัวแปรเหล่านั้นได้ แม้จะเป็นตัวแปรเริ่มต้น แม้ว่าฉันจะเลือกการรวม plink ด้วย แต่นั่นคือเหตุผลที่ฉันมาที่นี่) ขอบคุณ
Antony Hatchkins

1
สิ่งนี้ใช้ได้ผลกับฉันเช่นกันใน Win7 เห็นได้ชัดว่าการตั้งค่า git bash ด้วย plink ทำให้เกิดปัญหาในกรณีของฉัน
nhylated

2
unset GIT_SSHทำงานให้ฉันด้วยแม้ว่าฉันต้องทำทุกครั้งที่เปิด git bash ซึ่งค่อนข้างน่าเบื่อ มีความคิดอย่างไรในการทำให้เป็นอัตโนมัติ?
Loïc

19

ฉันสงสัยว่าคุณตัวแปรสภาพแวดล้อมมีการตั้งค่าGIT_SSH %ProgramFiles(x86)%\putty\plink.exeด้วยเหตุผลบางประการ PLink ไม่ใช้.ssh/known_hostsไฟล์ในไดเร็กทอรีผู้ใช้ของคุณเพื่อจัดเก็บคีย์โฮสต์ระยะไกล

หากเป็นกรณีของคุณจริงและอาจเป็นไปตามวัตถุประสงค์หากคุณต้องการใช้การประกวดคุณต้องใช้ PLink เพื่อเชื่อมต่อกับโฮสต์ก่อน

"$GIT_SSH" user@hostname

คุณควรได้รับข้อความที่คล้ายกัน

The server's host key is not cached in the registry. You
have no guarantee that the server is the computer you
think it is.
The server's rsa2 key fingerprint is:
ssh-rsa 2048 86:7b:1b:12:85:35:8a:b7:98:b6:d2:97:5e:96:58:1d
If you trust this host, enter "y" to add the key to
PuTTY's cache and carry on connecting.
If you want to carry on connecting just once, without
adding the key to the cache, enter "n".
If you do not trust this host, press Return to abandon the
connection.
Store key in cache? (y/n)

เมื่อคุณตอบyคำถามและเชื่อมต่อกับโฮสต์ระยะไกลเรียบร้อยแล้วคุณควรตั้งค่าทั้งหมด ลองผลักดันอีกครั้ง


นี่คือสำหรับฉันโดยใช้ Git Bash บน windows ด้วย PLink / Pageant ขอบคุณมาก!
amsross

1
ฉันต้องใช้ที่เก็บ Stash (ตอนนี้เป็น Bitbucket)"$GIT_SSH" -P 7999 git@stash.domain.local
Julien

4

เพียงแค่ ssh'ing กับโฮสต์นั้นไม่เพียงพออย่างน้อยใน Windows ที่เพิ่มคีย์โฮสต์ssh/known_hostsแต่ข้อผิดพลาดยังคงมีอยู่

คุณต้องปิดหน้าต่าง git bash แล้วเปิดใหม่ จากนั้นแคชของรีจิสทรีจะถูกล้างและการกด / ดึงจะทำงาน


ssh/known_hostsเกี่ยวข้องกับอะไร,% USERPROFILE% ฉันมีปัญหานี้ใน Win 7 และไม่มีวิธีแก้ไข ...
Frank Nocke

2

Rene HOMEตัวแปรของคุณตั้งค่าไม่ถูกต้อง ไม่ว่าจะเปลี่ยนไปหรือเพียงเพื่อc:\Users\(your-username)%USERNAME%


2

วิธีแก้ปัญหาด้วย Plink

บันทึกสคริปต์ python นี้ไปที่known_hosts.py:

#! /usr/bin/env python

# $Id$
# Convert OpenSSH known_hosts and known_hosts2 files to "new format" PuTTY
# host keys.
#   usage:
#     kh2reg.py [ --win ] known_hosts1 2 3 4 ... > hosts.reg
#       Creates a Windows .REG file (double-click to install).
#     kh2reg.py --unix    known_hosts1 2 3 4 ... > sshhostkeys
#       Creates data suitable for storing in ~/.putty/sshhostkeys (Unix).
# Line endings are someone else's problem as is traditional.
# Developed for Python 1.5.2.

import fileinput
import base64
import struct
import string
import re
import sys
import getopt

def winmungestr(s):
    "Duplicate of PuTTY's mungestr() in winstore.c:1.10 for Registry keys"
    candot = 0
    r = ""
    for c in s:
        if c in ' \*?%~' or ord(c)<ord(' ') or (c == '.' and not candot):
            r = r + ("%%%02X" % ord(c))
        else:
            r = r + c
        candot = 1
    return r

def strtolong(s):
    "Convert arbitrary-length big-endian binary data to a Python long"
    bytes = struct.unpack(">%luB" % len(s), s)
    return reduce ((lambda a, b: (long(a) << 8) + long(b)), bytes)

def longtohex(n):
    """Convert long int to lower-case hex.

    Ick, Python (at least in 1.5.2) doesn't appear to have a way to
    turn a long int into an unadorned hex string -- % gets upset if the
    number is too big, and raw hex() uses uppercase (sometimes), and
    adds unwanted "0x...L" around it."""

    plain=string.lower(re.match(r"0x([0-9A-Fa-f]*)l?$", hex(n), re.I).group(1))
    return "0x" + plain

output_type = 'windows'

try:
    optlist, args = getopt.getopt(sys.argv[1:], '', [ 'win', 'unix' ])
    if filter(lambda x: x[0] == '--unix', optlist):
        output_type = 'unix'
except getopt.error, e:
    sys.stderr.write(str(e) + "\n")
    sys.exit(1)

if output_type == 'windows':
    # Output REG file header.
    sys.stdout.write("""REGEDIT4

[HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\SshHostKeys]
""")

# Now process all known_hosts input.
for line in fileinput.input(args):

    try:
        # Remove leading/trailing whitespace (should zap CR and LF)
        line = string.strip (line)

        # Skip blanks and comments
        if line == '' or line[0] == '#':
            raise "Skipping input line"

        # Split line on spaces.
        fields = string.split (line, ' ')

        # Common fields
        hostpat = fields[0]
        magicnumbers = []   # placeholder
        keytype = ""        # placeholder

        # Grotty heuristic to distinguish known_hosts from known_hosts2:
        # is second field entirely decimal digits?
        if re.match (r"\d*$", fields[1]):

            # Treat as SSH-1-type host key.
            # Format: hostpat bits10 exp10 mod10 comment...
            # (PuTTY doesn't store the number of bits.)
            magicnumbers = map (long, fields[2:4])
            keytype = "rsa"

        else:

            # Treat as SSH-2-type host key.
            # Format: hostpat keytype keyblob64 comment...
            sshkeytype, blob = fields[1], base64.decodestring (fields[2])

            # 'blob' consists of a number of
            #   uint32    N (big-endian)
            #   uint8[N]  field_data
            subfields = []
            while blob:
                sizefmt = ">L"
                (size,) = struct.unpack (sizefmt, blob[0:4])
                size = int(size)   # req'd for slicage
                (data,) = struct.unpack (">%lus" % size, blob[4:size+4])
                subfields.append(data)
                blob = blob [struct.calcsize(sizefmt) + size : ]

            # The first field is keytype again, and the rest we can treat as
            # an opaque list of bignums (same numbers and order as stored
            # by PuTTY). (currently embedded keytype is ignored entirely)
            magicnumbers = map (strtolong, subfields[1:])

            # Translate key type into something PuTTY can use.
            if   sshkeytype == "ssh-rsa":   keytype = "rsa2"
            elif sshkeytype == "ssh-dss":   keytype = "dss"
            else:
                raise "Unknown SSH key type", sshkeytype

        # Now print out one line per host pattern, discarding wildcards.
        for host in string.split (hostpat, ','):
            if re.search (r"[*?!]", host):
                sys.stderr.write("Skipping wildcard host pattern '%s'\n"
                                 % host)
                continue
            elif re.match (r"\|", host):
                sys.stderr.write("Skipping hashed hostname '%s'\n" % host)
                continue
            else:
                m = re.match (r"\[([^]]*)\]:(\d*)$", host)
                if m:
                    (host, port) = m.group(1,2)
                    port = int(port)
                else:
                    port = 22
                # Slightly bizarre output key format: 'type@port:hostname'
                # XXX: does PuTTY do anything useful with literal IP[v4]s?
                key = keytype + ("@%d:%s" % (port, host))
                value = string.join (map (longtohex, magicnumbers), ',')
                if output_type == 'unix':
                    # Unix format.
                    sys.stdout.write('%s %s\n' % (key, value))
                else:
                    # Windows format.
                    # XXX: worry about double quotes?
                    sys.stdout.write("\"%s\"=\"%s\"\n"
                                     % (winmungestr(key), value))

    except "Unknown SSH key type", k:
        sys.stderr.write("Unknown SSH key type '%s', skipping\n" % k)
    except "Skipping input line":
        pass

การทดสอบบน Win7x64 และงูหลาม 2.7

จากนั้นเรียกใช้:

ssh-keyscan -t rsa bitbucket.org >>~/.ssh/known_hosts
python --win known_hosts.py >known_hosts.reg
start known_hosts.reg

และเลือกนำเข้าสู่รีจิสทรี. คีย์สามารถดึงคีย์สาธารณะสำหรับโดเมน (ฉันมีปัญหากับ bitbucket) จากนั้นสคริปต์ python จะแปลงเป็นรูปแบบ Plink


2

มีปัญหาเดียวกันและลืมเชื่อมต่อกับ SSH บนพอร์ตที่เป็นที่เก็บแอคชูออลไม่ใช่แค่พอร์ต SSH ทั่วไปแล้วคีย์โฮสต์ก็แตกต่างกัน!


นอกจากนี้ยังใช้วิธีเดียวกันในการระบุโฮสต์เช่นไม่ใช่ gitserver.example.com สำหรับ ssh และ gitserver สำหรับ git
Matthijs P

2

เพียงเปิด Putty และพยายามสร้างการเชื่อมต่อกับเซิร์ฟเวอร์ระยะไกลที่คุณต้องการพุชรหัสของคุณ เมื่อกล่องโต้ตอบปรากฏขึ้นให้กดใช่ (คุณเชื่อถือรีโมต) จากนั้นทุกอย่างจะเรียบร้อย


2

สภาพแวดล้อมการทำงาน:

  • Windows 10
  • คอมไพล์
  • ผงสำหรับอุดรู

ขั้นแรก:ลบ putty known_hosts ใน register ตาม Regedit
จากนั้น:การดำเนินการคำสั่ง%GIT_SSH% user@hostnameใน cmd ของ Window ช่วยแก้ปัญหาได้

หวังว่ามันจะช่วยคุณทุกคน


1

ฉันก็มีปัญหาเดียวกันเช่นกันเมื่อฉันพยายามโคลนที่เก็บบนเครื่อง Windows 7 ของฉัน ฉันลองใช้คำตอบส่วนใหญ่ที่กล่าวถึงที่นี่ ไม่มีใครทำงานให้ฉัน

สิ่งที่ได้ผลสำหรับฉันคือการรันโปรแกรมPageant (Putty authentication agent) เมื่อ Pageant ทำงานในพื้นหลังฉันสามารถโคลนได้ให้กด & ดึงจาก / ไปยังที่เก็บ สิ่งนี้ใช้ได้ผลสำหรับฉันอาจเป็นเพราะฉันได้ตั้งค่าคีย์สาธารณะของฉันไว้เช่นนั้นเมื่อใดก็ตามที่ใช้เป็นครั้งแรกต้องใช้รหัสผ่านและการเริ่มต้นเพจ


คุณได้รับข้อความแสดงข้อผิดพลาดอื่น ๆ เมื่อเป็นปัญหาการประกวด ไม่ใช่Connection abandonedแต่บางอย่างเช่นAccess denied (private key)
Andrey Regentov

1

การเปลี่ยนจาก PuTTY เป็น OpenSSH ช่วยแก้ไขปัญหานี้ให้ฉันโดยไม่จำเป็นต้องยกเลิกการตั้งค่า GIT_SSH เป็นต้น


หากคุณได้รับข้อความเกี่ยวกับโฮสต์คีย์ที่ไม่รู้จักในขณะที่ดำเนินการกด / ดึงคอมไพล์โดยใช้ ATLASSIAN SOURCETREE คุณไม่มีความสามารถในการตอบ y / n และการดำเนินการ push / pull จะถูกยกเลิกโดยไม่ต้องแคชคีย์ อย่างไรก็ตามการไปที่ SourceTree Tools-> Options (General Tab) และการเปลี่ยน SSH Client ภายใต้ (ภายใต้ SSH Client Configuration) จาก PuTTY เป็น OpenSSH จะทำให้สามารถแคชคีย์ได้โดยไม่ต้องเปลี่ยนแปลงสิ่งอื่นใด
Rod Dewell

1

ฉันแก้ไขปัญหาที่คล้ายกันโดยใช้วิธีแก้ปัญหานี้

คุณต้องเปลี่ยนเป็น Embedded Git กดปุ่ม Yes จากนั้นเปลี่ยนกลับไปที่ System Git

คุณสามารถค้นหาตัวเลือกนี้ได้ใน

Tools -> Options -> Git

1
ตอนนี้อยู่ที่ v2.5.5.0 location:C:\Users\{UserName}\AppData\Local\SourceTree\app-2.5.5\tools\putty> .\plink.exe {YourNewHost}
John_J

1

ในฐานะที่เป็นคำตอบโดยโรมัน Starkov , plinkความต้องการที่จะเพิ่มพื้นที่ในการเป็นของแคช

สำหรับผู้ที่ใช้Git Extensions :

  1. เปิด Git Extensions
  2. ไปที่ Tools -> Settings -> SSH
  3. คัดลอกเส้นทางไปที่ "plink.exe" (หากใช้ PuTTY) / "klink.exe" (หากใช้ KiTTY)
  4. ในคอนโซลให้รันคำสั่งต่อไปนี้:

(แทนที่ด้วยเส้นทางจริง)

<the path to plink/klink.exe> <address to the server>

เช่น

%ProgramData%\chocolatey\lib\kitty\tools\klink.exe codebasehq.com

หมายเหตุ : อย่าลืมใช้ plink / klink เดียวกับที่ Git Extensions ใช้!


0

การเพิ่มโฮสต์โดยตรงด้วย Bash ไม่สามารถแก้ปัญหาได้ข้อผิดพลาดยังคงเกิดขึ้นเมื่อใช้ "ดึงข้อมูลทั้งหมด" ในส่วนขยาย Git ด้วยการใช้ 'Pull' ในสาขาเดียวโฮสต์ที่ต้องการจะถูกเพิ่มโดยอัตโนมัติโดย Git Extensions พร้อมหน้าจอป๊อปอัพ Bash หลังจากทำเช่นนี้แล้วฉันสามารถใช้ "ดึงข้อมูลทั้งหมด" ได้อีกครั้ง ไม่แน่ใจว่า Git Extensions ทำอะไรแตกต่างกัน


0

ฉันได้ลองใช้วิธีการทั้งหมดข้างต้นแล้ว แต่ไม่มีวิธีใดที่สามารถแก้ไขปัญหาเดียวกันบนแล็ปท็อปของฉันได้ ในที่สุดแทนที่จะผลักสาขาไปยังจุดเริ่มต้นใน git bash ฉันตัดให้ใช้ตัวเลือกการกดของ TortoiseGit เพื่อทำการพุชจากนั้นหน้าต่างจะปรากฏขึ้นเพื่อขอให้ฉันเพิ่มรหัสโฮสต์ใหม่ในแคชหลังจากคลิกปุ่มใช่ทุกอย่างจะเป็นไป ตอนนี้สบายดี

หวังว่าจะช่วยให้คุณทุกคน


0

ฉันเปลี่ยนฮาร์ดดิสก์ติดตั้ง Windows เมื่อพยายามอัปโหลดไฟล์ได้รับหน้าต่างคำสั่งนี้

ฉันกด "y" จากนั้น Ctrl + C เปิดputty.exeแล้วเพิ่มคีย์เก่าและกลับไปที่คอมไพล์และพุชไฟล์


0

เพียงถอนการติดตั้ง Git Extensions และติดตั้งอีกครั้งโดยเลือก OpenSSH แทน


0

ใน Windows 7 หรือ 10 เคล็ดลับที่ใช้ได้ผลสำหรับฉันคือการลบตัวแปรระบบ GIT_SSH มันถูกตั้งค่าก่อนที่จะใช้ Plink และตอนนี้ถูกแทนที่ด้วย Putty นี่เป็นสาเหตุของข้อผิดพลาด Plink.exe

นอกจากนี้ยังมีการติดตั้ง Git (เวอร์ชัน 32 บิต) เก่าและอัปเดตเป็น Git (เช่น Git-2.20.1-64-bit.exe) เนื่องจากพีซีเป็นระบบปฏิบัติการ 64 บิต

อย่างไรก็ตาม Git ไม่ได้ใช้ Putty / Plink เนื่องจากในการติดตั้ง Git เป็นค่าเริ่มต้นที่จะใช้ Open SSH


0

หากคุณได้รับข้อความเกี่ยวกับโฮสต์คีย์ที่ไม่รู้จักในขณะที่ดำเนินการกด / ดึงคอมไพล์โดยใช้ ATLASSIAN SOURCETREE คุณไม่มีความสามารถในการตอบ y / n และการดำเนินการ push / pull จะถูกยกเลิกโดยไม่ต้องแคชคีย์ อย่างไรก็ตามการไปที่ SourceTree Tools-> Options (General Tab) และการเปลี่ยน SSH Client ภายใต้ (ภายใต้ SSH Client Configuration) จาก PuTTY เป็น OpenSSH จะทำให้สามารถแคชคีย์ได้โดยไม่ต้องเปลี่ยนแปลงสิ่งอื่นใด

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