Vscode: Git: Mendukung git dengan kata sandi kunci pribadi

Dibuat pada 13 Okt 2016  ·  229Komentar  ·  Sumber: microsoft/vscode

  • Versi VSCode: 1.6.0
  • Komit e52fb0bc87e6f5c8f144e172639891d8d8c9aa55
  • Tanggal 2016-10-10T18: 37: 40.189Z
  • Kulit 1.3.7
  • Perender 52.0.2743.82
  • Node 6.5.0
  • Versi OS: Windows 7 Pro

Langkah-langkah untuk Mereproduksi:

  1. Buat pasangan kunci publik-pribadi dengan perlindungan kata sandi
  2. tambahkan mereka ke akun github Anda
  3. setup git untuk menggunakan file kunci pribadi
  4. coba dorong sesuatu dengan git

Hasil:

git pull
Permission denied, please try again.
Permission denied, please try again.
Permission denied (publickey,password).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
feature-request git help wanted

Komentar yang paling membantu

Solusi untuk Windows 10:

  1. Jadikan Git menggunakan OpenSSH yang disertakan dengan Windows, bukan yang disertakan dengan Git.
    git config --global core.sshCommand "C:/Windows/System32/OpenSSH/ssh.exe"
  2. Setel layanan ssh-agent (bukan yang disertakan dengan git) untuk berjalan secara otomatis.
    Buka Task Manager, tab Services, klik Open Services.
    Temukan Agen Otentikasi OpenSSH, buka properti, atur Jenis Startup ke Otomatis, tekan OK.
    Juga mulai layanan atau mulai ulang komputer Anda.
  3. Tambahkan kunci yang dilindungi kata sandi Anda ke agen.
    ssh-add
    Ini harus secara otomatis mengambil kunci yang disimpan di C: \ Users \% USERNAME% \. Ssh yang mana ssh-keygen membuatnya.
    Masukkan kata sandi Anda saat diminta.

Catatan: Jika, saat menginstal Git untuk Windows, Anda memilih opsi untuk menambahkan perintah bash ke PATH, perintah ssh-add mungkin mengarah ke eksekusi yang salah. Jika demikian, Anda dapat menjalankan secara manual yang disertakan agar kunci Anda ditambahkan ke agen:
C:\Windows\System32\OpenSSH\ssh-add.exe

Sekarang agen autentikasi OpenSSH bawaan akan berjalan saat start up dengan kunci yang dilindungi kata sandi Anda tidak terkunci, dan Git akan menggunakan Windows OpenSSH, bukan miliknya sendiri. Jadi tidak perlu mengetikkan kata sandi Anda setiap saat, tidak perlu memulai agen ssh secara manual, dan tidak perlu memulai VS Code dari baris perintah.

Semua 229 komentar

Apakah ini berfungsi dari baris perintah? Bagaimana tepatnya Anda mengatur git untuk menggunakan file kunci pribadi?

Ia bekerja dari baris perintah. Sebenarnya saya mengatur git melalui tortoise git - jadi saya rasa semuanya dilakukan dengan benar.

image

Bagaimana Anda meluncurkan baris perintah? Baris perintah yang mana?

Saya menggunakan git bash (MINGW64) di windows.

Baik. Jadi, kita mungkin harus menambahkan pengaturan git.sshkey juga, seperti Tortoise.

Dengan Windows 10, Git 2.10.1.

Mengalami masalah saat menggunakan git di vscode dengan server produksi saya, jadi saya membuat server uji.
Pada awalnya, dengan pengguna yang dilindungi kata sandi (tanpa kunci), kesalahan yang sama - tidak ada munculan prompt kredensial atau apa pun.
Menggunakan terminal di dalam vscode atau cmd acak apa pun, saya dapat mendorong, menarik, dan berfungsi - meminta kata sandi. Dengan vscode saya hanya dapat menyiapkan komit. Tarik, dorong, sinkronkan semua gagal karena mereka tidak meminta sandi.

Dalam produksi, saya menggunakan kunci yang dilindungi frasa sandi dengan port 5 digit yang berbeda untuk ssh.
Saya juga memiliki beberapa kunci ssh yang berbeda (termasuk git) pada satu mesin ...

@joaomoreno Mengapa Anda memindahkannya ke backlog?

Hanya merencanakan prioritas. Anda dapat mencoba permintaan penarikan. 👍

Menunggu 😉

Ada pembaruan tentang ini? Saya mengalami masalah yang sama dan itu cukup mengganggu 😞

@joaomoreno Aku mencoba ini. Ini memengaruhi saya secara pribadi sekarang karena saya baru saja pindah ke keamanan berbasis kunci.

Orang-orang dapat melacak kemajuan saya di sini .

@hashhar Itu luar biasa! 🍻 Beri tahu saya jika Anda menabrak tembok.

@joaomoreno Saya sedang mencari tempat-tempat yang perlu diubah dan menemukan yang berikut:

Skenario Saat Ini:

  • Jika Anda memiliki agen ssh yang berjalan dengan kunci yang ditambahkan ke dalamnya, Anda dapat melakukan semua operasi kecuali clone (karena node.url.parse () tidak berfungsi untuk url ssh).
  • Jika ssh-agent tidak menjalankan semua perintah git yang melibatkan aktivitas jaringan (fetch, clone, push, pull) gagal. Kesalahan ini dihasilkan oleh git.exe.

Perubahan yang Diajukan:

  • [x] Tidak diperlukan, lihat komentar berikutnya Tambahkan overload ke url.parse () (di mana?) untuk memastikan url ssh juga dikenali.
  • [x] Tambahkan kunci konfigurasi, git.sshkey (lokasi kunci privat (terbatas pada kunci openssh saat ini - karena git mendukungnya secara native, akan melihat ke kunci dempul nanti)).
  • [] Tambahkan kondisi di mana ekstensi git diinisialisasi untuk memulai agen SSH (jika tidak ada yang berjalan) dan tambahkan kunci. Akan perlu entah bagaimana (quickpick?) Meminta pengguna untuk memasukkan frasa sandinya. ( Apakah kita membunuh agen saat kita menutup vscode? )

Tidak ada perubahan lain yang diperlukan (dari apa yang saat ini saya lihat) karena komunikasi dengan titik akhir git ditangani oleh git.exe bukan oleh vscode.

Oke, saya buruk tentang url parsing. Sepertinya node menerima url seperti git+ssh://[email protected]:hashhar/vscode atau ssh://[email protected]:hashhar/vscode tetapi bagian ssh harus disebutkan secara eksplisit.

Apa yang harus saya lakukan tentang ini, jika vscode secara ajaib menambahkan ssh sebelum url yang cocok dengan format [email protected]:username/repo . Atau gagal diam-diam? (Ini masih perlu dijalankan ssh-agent).

Ping @joaomoreno. Jika Anda bisa meluangkan waktu, berikan komentar tentang masalah yang saya miliki di atas. Saat ini saya telah meretas bukti konsep dengan memulai ssh-agent terhadap kunci pribadi. Ini berhasil tetapi beberapa polesan masih diperlukan.

@hashhar Maaf atas keterlambatannya ... Saya sebenarnya cukup sibuk saat ini. Jangan ragu untuk membuat PR dan memindahkan diskusi ke sana, kami akan mencoba memasukkannya untuk bulan Maret.

Tidak cukup hanya memulai ssh-agent, Anda juga perlu menambahkan variabel lingkungan SSH_AGENT_PID dan SSH_AUTH_SOCK sehingga Git tahu ke mana harus mencari.

Anda kemudian harus menyimpannya di suatu tempat, sehingga dapat digunakan di antara memulai ulang VSCode, atau Anda harus memulai ulang ssh-agent setiap kali Anda memulai ulang VS Code.

Akan sangat menyenangkan jika dapat membagikan ini dengan Posh-Git (modul Powershell Git), yang menyimpan nilai dalam ([System.IO.Path]::GetTempPath()) ".ssh\$key.env" - tetapi mungkin layak untuk berbicara dengan tim itu untuk memastikan bahwa lokasi itu adalah sesuatu yang mereka inginkan. senang dikunci.

@andrewducker Terima kasih banyak atas masukan tambahannya. Saya belum mengerjakan ini dengan kecepatan yang saya inginkan karena pertengahan semester saya. Saya akan membahasnya lagi di akhir minggu. Saya akan memberi tahu tim Posh-Git.

@joaomoreno Saya harus kembali mengerjakan ini. Pendekatan saya sebelumnya terlalu naif dan tidak berhasil. Saat ini saya mencoba mencari tempat yang cocok untuk menambahkan fungsi yang dipanggil sebelum melakukan perintah git apa pun (mis. Saat VSCode dijalankan dan penyedia git sedang memuat). Dimana saya melakukan ini? Saya tidak bisa mengerti apa itu aliran kode.

Apakah ada potongan kode yang dipanggil setiap kali panggilan Git dilakukan? Jika demikian, maka Anda dapat meminta kata sandi saat pertama kali dipanggil.

Melihatnya, memasang hook ke Git.ts akan menjadi cara yang tepat, di dalam semua fungsi yang berarti menghubungkan ke server. (Seperti ambil, tarik, dorong, dll).

(Saya akan menawarkan untuk melakukan ini sendiri, tetapi saya tidak pernah menulis apa pun di TypeScript, atau bekerja dengan ekstensi VSCode, jadi ini hanya berdasarkan saya menggali kode di GitHub secara singkat.)

Masalah terbesar adalah bahwa pada Windows variabel SSH_AUTH_SOCK dan SSH_AUTH_PID mungkin tersedia untuk semua proses atau hanya satu sesi konsol tergantung pada bagaimana ssh-agent dimulai. Jadi jauh lebih mudah untuk memulai ssh-agent dari dalam VSCode daripada menggunakan kembali yang sudah ada (setidaknya di Windows).

Secara praktis, ini berarti bahwa pengguna harus memasukkan frasa sandi mereka SEKALI sebelum operasi Git pertama selesai. Instance VSCode dapat membagikan ssh-agent di antara mereka sendiri jika kita dapat menentukan tempat hardcode tempat SSH_AUTH_SOCK akan dibuat sehingga instance VSCode lain dapat melihatnya sebelum memulai agen mereka sendiri.

Ini ternyata menjadi tantangan yang cukup menarik bagi saya. 😃

Ini juga akan menjadi opsi yang layak jika vscode akan menghormati SSH_AUTH_SOCK yang sudah ada. Saya dimintai kata sandi kunci pribadi saya meskipun ssh-agent sudah berjalan di sistem saya. Menariknya saya dapat menggunakan git dalam terminal vscode terintegrasi (shell) dengan baik. Plugin git dan terminal harus berperilaku sama untuk proses debug yang lebih mudah.

EDIT: Saya sedang komit f9d0c687ff2ea7aabd85fb9a43129117c0ecf519
EDIT2: Ini berfungsi ketika saya menjalankan vscode dari bash daripada menggunakan peluncur pengelola jendela saya.

Ya - memulai VSCode dari sesi yang sudah mengaturnya di lingkungan berfungsi dengan sempurna (Meluncurkan dari Powershell dalam kasus saya). Jadi jika sudah diatur maka tidak ada yang bisa dilakukan.

ada kemajuan dalam hal ini?

@ezamelzy Tidak. Maafkan saya. Saya belum bisa meluangkan cukup waktu karena kuliah. Terima kasih telah mengingatkan saya btw. Saya akan mencoba menyelesaikan beberapa pekerjaan minggu depan.

Halo semuanya,

Sayangnya saya mengalami masalah yang sama ... 😭
Ini konfigurasi saya dan skenario terperinci untuk mereproduksinya.
Saya harap ini akan sedikit membantu!

OS : macOSX Sierra Versi 10.24.4
VScode : Versi 1.11.1

Di folder .ssh saya, saya memiliki file-file itu:

  • config
  • id_rsa_github
  • id_rsa_github.pub
  • id_rsa_gitlab
  • id_rsa_gitlab.pub
  • know_hosts

Isi file konfigurasi :

Host gitlab.com
  HostName gitlab.com
  User git
  RSAAuthentication yes
  IdentityFile ~/.ssh/id_rsa_gitlab

Host github.com
  HostName github.com
  User git
  RSAAuthentication yes
  IdentityFile ~/.ssh/id_rsa_github

Saya dapat melakukan dan mendorong tanpa masalah dari baris perintah dan menara.
Tapi saya tidak bisa di VScode ... itu mengembalikan saya pesan keluaran ini setiap kali saya mencoba:

git pull
Izin ditolak (publickey).
fatal: Tidak dapat membaca dari repositori jarak jauh.
Harap pastikan Anda memiliki hak akses yang benar
dan repositori ada.

Terima kasih atas bantuan Anda

Bagi saya ini benar-benar pemblokir. Saya suka VSC, tetapi tanpa kemampuan untuk menggunakan git, saya tidak dapat menggunakannya sebagai editor harian saya.

@MartinZubek @jmbelloteau Apakah meluncurkannya dari baris perintah tempat Anda memulai Agen SSH akan memperbaikinya untuk Anda?

@tokopedia

Dari terminal saya telah terhubung ke Git jarak jauh saya dengan perintah:

ssh -T [email protected]

... maka saya telah membuka VScode dari terminal dengan perintah:

code

Ketika saya mendorong dari VScode saya masih mendapatkan kesalahan yang sama ...
Itu benar-benar masalah!

@MartinZubek sama di sini, VScode luar biasa, lebih dari Atom.
Saya suka kecepatan terminal terintegrasi UX dan kemungkinan untuk menggunakan git.

Tetapi kami juga membutuhkan koneksi ke GIT jarak jauh agar aman. Itu berarti kata sandi melindungi SSH ...

Itu masuk akal ... bukan?

@andrewducker Memang cara ini berhasil bagi saya. :)
Adakah kemungkinan itu akan bekerja secara asli tanpa perlu memulainya dari baris perintah?

Hai @artinubek ,

Apa yang berhasil untuk Anda? Bisakah Anda lebih spesifik? 😄

@jmbelloteau Tentu, ini tidak lagi diakhiri dengan kesalahan "Izin ditolak (publickey)" dan git pull / push berfungsi sebagaimana mestinya. Ini menggunakan kunci yang benar dari file ~ / .ssh / config dan kapan pun frasa sandi kunci diperlukan, jendela ini akan muncul:
http://imgur.com/wpExMMP

@MartinZubek sehingga Anda dapat mendorong dari VScode ?! Itu hebat...
Apakah Anda meluncurkannya dari baris perintah tempat Anda memulai Agen SSH?
Jika ya bagaimana?
Saya tidak mengerti mengapa itu tidak berhasil di lingkungan saya

@jmbelloteau Ya, saya meluncurkan vscode dari baris perintah yang saya gunakan (ini adalah git-bash.exe yang secara default disertakan dengan git untuk windows). Saya tidak harus memulai ssh-agent atau apapun secara manual. Saya kira ini dimulai secara otomatis dengan git-bash atau semacamnya.

@Tokopedia

Bahkan seperti yang Anda katakan itu tidak berhasil untuk saya 😭

@vscodeteam Ada rencana untuk menangani masalah ini?

@jmbelloteau Ini terlalu sulit. Ini juga cukup untung-untungan. Apa yang saya coba terapkan adalah memulai ssh-agent di bawah proses node sehingga variabel env tersedia untuk VSCode tetapi itu berarti bahwa beberapa instance VSCode akan membutuhkan banyak ssh-agent dan masih memerlukan frasa sandi untuk dimasukkan setiap saat.

Saya sedang mencari cara untuk menggunakan variabel SSH_AUTH_SOCK sebagai gantinya. Ini berfungsi di Linux tetapi belum mengujinya di Windows.

Ada masalah tambahan OpenSSH vs Windows Powershell SSH vs PuTTY.

Jika ada yang mau mengujinya, saya bisa memasukkan kode ke garpu dan orang bisa mengujinya. Ini akan memakan waktu lama karena saya telah menggunakan jalur harcoded (bukti hal konsep).

Saya pikir saya akan menyelesaikannya pada hari Sabtu atau Minggu.

Hai @hashhar !

Terima kasih atas jawaban anda.
Memang terlihat sangat rumit. 😞

Saya bukan benar-benar pengembang, jadi saya tidak bisa membantu Anda, saya akan tetap ada jika Anda menemukan keajaiban dan mengirimi Anda keberuntungan!

@hashhar tentang komentar Anda, saya punya 2 opsi untuk disarankan:

  1. Anda bisa memulai ulang seluruh VSCode (termasuk proses node leluhur) di bawah ssh-agent , dijalankan oleh ssh-agent path/to/code ; dengan cara ini, tidak perlu menjalankan satu instance ssh-agent untuk setiap proses node.
  2. Anda dapat menjalankan ssh-agent dari proses node, mendapatkan variabel lingkungan (misalnya mencetaknya pada file) dan membagikannya melalui semua proses.

Saya pasti bisa menguji. Apakah saya memerlukan sesuatu yang khusus untuk membangunnya? Saya telah menginstal versi resmi.
Saya bisa membangunnya :)

@ Joaomoreno Saya rasa saya telah menyiapkan perbaikan sebagian.

Di file extensions/git/src/askpass.ts , saya mengubah getEnv() menjadi:

getEnv(): Promise<any> {
        return this.portPromise.then(port => ({
            ELECTRON_RUN_AS_NODE: '1',
            GIT_ASKPASS: path.join(__dirname, 'askpass.sh'),
            VSCODE_GIT_ASKPASS_NODE: process.execPath,
            VSCODE_GIT_ASKPASS_MAIN: path.join(__dirname, 'askpass-main.js'),
            VSCODE_GIT_ASKPASS_PORT: String(port),
            SSH_AUTH_SOCK: process.env['SSH_AUTH_SOCK'],
            SSH_AGENT_PID: process.env['SSH_AGENT_PID'],
            SSH_ASKPASS: process.env['SSH_ASKPASS'] || '/usr/lib/ssh/x11-ssh-askpass'
        }));
    }

SSH_AUTH_SOCK diambil dari lingkungan pengguna jika disetel.

Hal-hal berikut sekarang dimungkinkan:

| ssh-agent | kunci ssh dimuat di agen | hasil |
|: ---: |: ---: |: ---: |
| ✔ | ✔ | ✔ |
| ✔ | ✘ | $ SSH_ASKPASS dijalankan |
| ✘ | ✘ | tidak ada yang terjadi |

Jadi untuk memperbaiki masalah di baris ke-2, kita dapat menyetel SSH_ASKPASS dari askpass.ts juga dan itu menyebabkan VSCode meluncurkan program saat startup dan meminta kata sandi kunci SSH.

Untuk baris terakhir, kita perlu memulai ssh-agent dari dalam VSCode dan mengatur variabel yang tepat.

Relawan?

Jika seseorang ingin mengujinya, Anda dapat mengkloning garpu saya (https://github.com/hashhar/vscode), beralih ke cabang git-ssh-key dan membangunnya dan menjalankannya. Coba periksa apa yang terjadi pada semua kombinasi dari tabel di atas. Untuk meminimalkan kebisingan di sini, Anda dapat mengomentari masalah ini .

@hashhar Keseluruhan process.env selalu dikirimkan ke Git saat memijahnya:

https://github.com/Microsoft/vscode/blob/master/extensions/git/src/git.ts#L383

Bukankah variabel-variabel itu dilewatkan tanpa cuplikan Anda?

@joaomoreno Oke. Menggali lebih dalam menunjukkan kepada saya dua masalah.

  1. VSCode tampaknya tidak menggunakan variabel SSH_ASKPASS. Ini di-hardcode ke '/ usr / lib / ssh-ssh-askpass'. Pada dasarnya satu-satunya masalah adalah bahwa VSCode tidak membantu Git dengan memberitahukan cara meluncurkan prompt untuk mendapatkan frasa sandi ssh-key pengguna.

Kebanyakan alat di linux menyediakan program yang terhubung dengan '/ usr / lib / ssh / ssh-askpass' tetapi banyak yang tidak. Jadi itu adalah masalah yang menurut saya sedang dipukul orang.

Saya bisa menggunakan VSCode dengan SSH selama kunci ssh sudah ditambahkan ke keyring ssh-agent.

Saya pikir saya sudah bodoh.

MELAKUKAN:

  1. Perluas vscode-askpass.ts dll. Untuk ssh juga.
  2. Mulai ssh-agent jika belum berjalan. Ini hanya masalah kenyamanan jika tidak, Anda harus memasukkan frasa sandi untuk setiap operasi git.

Saya minta maaf karena tidak bekerja sepenuhnya.

Jangan khawatir, Anda senang melakukannya! 👍

Saya telah mengalami kesalahan ini untuk sementara waktu sekarang, dan mengira itu saya. Ada kemajuan lagi dalam hal ini?

+1

+1

+1

+1

Tolong, hentikan spam! Gunakan tombol berlangganan dan tombol reaksi dan jangan menulis komentar yang tidak berguna.

Saya juga mendapatkan masalah yang sama.

image

Anehnya, bagi saya ini berfungsi di Git Bash, tetapi tidak di Bash untuk Windows (di mana saya mendapatkan kesalahan Permission denied (publickey) disebutkan di atas):

$ eval `ssh-agent`
$ ssh-add /path/to/key
$ code

Saya dapat memverifikasi bahwa kunci SSH berfungsi dengan melakukan sshing langsung ke remote dalam kedua kasus; satu-satunya perbedaan yang dapat saya lihat adalah saat startup di Bash untuk Windows, VSCode memperingatkan bahwa ia tidak dapat menentukan direktori kerja saat ini.

Masalah yang sama di sini, saya telah mencoba hampir semua solusi yang disarankan.

Saya menggunakan MacOs

@DavidBabel Saya menggunakan MacOs dan untuk sementara melewati masalah dengan menggunakan kunci ssh tanpa frasa sandi ...

@letsdevus Terima kasih atas bantuannya, tapi sayangnya itu tidak layak dalam konteks profesional

Satu-satunya cara yang saya temukan untuk membuatnya berhasil adalah dengan:

  1. Instal suite PuTTY
  2. Setel plink sebagai backend Git SSH (dengan variabel lingkungan GIT_SSH )
  3. Tambahkan ke PuTTYgen kunci akses Anda
  4. Sebelum semua operasi, di prompt perintah, gunakan plink untuk menghubungkan ke layanan yang ingin Anda gunakan

Ini triknya.

Mengatasi masalah yang sama, dan karena terus mencoba kembali menyempurnakan kinerja VSCode juga 👎

Baru saja menemukan masalah ini sendiri. Untungnya solusi (memulai kode dari shell) berfungsi untuk saya, tetapi alangkah baiknya jika masalah diperbaiki.

Hanya menabrak ini juga solusi dempul tampaknya membantu, tetapi saya lebih suka tidak memiliki dempul sama sekali.

Saya juga menangani masalah ini. Saya membuat akun terpisah untuk pekerjaan dan memiliki akun pribadi. Saya telah banyak bekerja dengan file pekerjaan akhir-akhir ini. Saya dapat melewatinya tetapi saya harus memasukkan frasa sandinya setiap kali. Bukan pembunuh tapi jauh lebih produktif.

Agak mengecewakan bahwa mencoba mengkloning repositori menggunakan VSC UI tidak berfungsi menggunakan URL git bergaya ssh. Sebagai catatan, saya menggunakan kunci SSH yang dilindungi kata sandi, dan saya sering tidak menjalankan agen SSH. Saya menemukan prompt kata sandi tambahan untuk membuka kunci saya sebenarnya agak meyakinkan - terutama saat mendorong perubahan. :-) Ini tidak besar, karena baris perintah berfungsi dengan baik untuk saya (sebagai catatan saya menjalankan kode VS di macOS.)

@gdamore jadi, ini benar-benar berfungsi untuk Anda, tanpa agen ... Tapi kita berbicara tentang Windows. 😝
Bagaimanapun, yang mana nama file kunci SSH? Apakah ini standar? Atau apakah VSCode cukup baik untuk menemukan file yang tepat?

Saya menjalankan VScode sebagian besar di macOS, seperti yang ditunjukkan. Saya tidak tahu bagaimana ini bekerja pada Windows; Saya tidak melakukan git commit dari Windows, dan sebaliknya mengandalkan sistem file bersama (contoh pengembangan Windows saya berjalan sebagai tamu dalam VM di mac saya.)

Saya mendapatkan kesalahan ini juga. tidak ada masalah sama sekali di baris perintah, tetapi tidak dapat melakukan aktivitas git di dalam aplikasi itu sendiri

membuat vscode tidak berguna sebagai git ide dalam konteks kerja

Saya dapat membuatnya berfungsi dengan mengikuti entri blog ini:

http://www.cgranade.com/blog/2016/06/06/ssh-keys-in-vscode.html

Masalah yang sama di OSX dengan kunci yang dilindungi frasa sandi.

Solusi sederhana:

Tambahkan variabel lingkungan pengguna bernama GIT_SSH dengan path ke C:\Program Files\PuTTY\plink.exe (setelah mengkonfigurasi path ke kunci pribadi menggunakan tortoise git )

Ini perlu diperbaiki, itu tidak menjadikan VS Code sebagai editor harian juga. : / Ada info tentang kemajuan masalah ini?

Akan sangat senang jika vscode mendapatkan kredensial ssh dari ssh-add .

Misalnya, struktur pohon sumber dapat mendeteksi kredensial yang tersedia (menggunakan osxkeychain?), Tanpa konfigurasi tambahan apa pun

git -c diff.mnemonicprefix=false -c core.quotepath=false -c credential.helper=sourcetree commit -q -F /var/folders/_0/bvqq9l5d2ngg0stvkf53jrbr0000gn/T/SourceTreeTemp.ccbSGv 


git -c diff.mnemonicprefix=false -c core.quotepath=false -c credential.helper=sourcetree push -v --tags --set-upstream origin refs/heads/master:refs/heads/master 
Pushing to [email protected]:hanxue/gif-is-jif.git
To github.com:hanxue/gif-is-jif.git
   4eed265..762069a  master -> master
updating local tracking ref 'refs/remotes/origin/master'
Branch master set up to track remote branch master from origin.
Completed successfully

Saya menghadapi masalah ini hari ini, saya menggunakan linux mint. saya menggunakan gantungan kunci .

sudo apt install keychain

eval 'keychain --eval SSHKEY'
dan hanya itu.

@ Silentz0r di mana Anda menjalankan perintah terakhir?

@ValentinH di shell Anda, baca contoh di link.

Guys, ini tinggal menunggu pembuat kode yang berani untuk memberikan PR!

Di OSX, saya memperbaikinya berkat https://github.com/jirsbek/SSH-keys-in-macOS-Sierra-keychain :

Dalam ~/.ssh buat config file dengan konten berikut:

Host * (asterisk for all hosts or add specific host)
  AddKeysToAgent yes
  UseKeychain yes
  IdentityFile <key> (e.g. ~/.ssh/userKey)

@joaomoreno
Tidak yakin seberapa "Berani" saya, tapi saya sedikit penggemar SSH.
Saya akan mengerjakan PR untuk bulan Desember.

Semua warga negara yang peduli ...

Setelah tes penyiapan cepat, tampaknya konfigurasi Windows 7 cukup mudah (lihat GIT_SSH dan komentar lainnya) Saya yakin komentar bahwa OS X yang menggunakan keychain sama mudahnya.
Pengaturan pada dasarnya adalah masalah konfigurasi eksternal. VSC tidak memerlukan konfigurasi atau perubahan fitur untuk menggunakan SSH, git memanggil klien SSH. Maaf jika saya melewatkan sesuatu yang jelas.

Selain wizard untuk penyiapan, saya mencoba menentukan apa yang benar-benar bermanfaat untuk ditambahkan ke kode.
Satu komentar menyebutkan menggunakan lebih dari satu kunci yang mungkin perlu mengubah variabel lingkungan mungkin berdasarkan konfigurasi ruang kerja. Bahkan itu semua bisa ditangani oleh agen. Menurut saya tidak masuk akal untuk melakukan sesuatu seperti menambahkan ssh ke Code karena git menangani ini secara langsung.

Adapun manajemen kredensial: yang benar-benar ingin ditangani oleh agen yang aman seperti
pagent / keychain dan sebagainya.

Komentar?

"VSC tidak memerlukan konfigurasi atau perubahan fitur untuk menggunakan SSH, git memanggil klien SSH. Maaf jika saya melewatkan sesuatu yang jelas."

(Di Windows)

Apa yang terjadi
Jika saya meluncurkan VS Code dari pintasan, dan belum juga mengunduh perangkat lunak pihak ketiga dan menjalankan beberapa konfigurasi baris perintah, maka itu tidak berfungsi dengan kunci SSH terenkripsi.

Di sisi lain, jika saya membuka Eclipse dan terhubung ke repositori Git, maka ia akan menanyakan frasa sandi ke kunci saya.

Diharapkan
Instalasi VSCode baru, pada sistem tanpa perangkat lunak lain yang diinstal, akan memunculkan kotak pesan yang menanyakan frasa sandi saya, dan kemudian menggunakannya untuk mendekripsi kunci saya dan menggunakannya untuk terhubung ke repositori jarak jauh.

@cleidigh SourceTree bekerja secara otomatis tanpa mengikuti instruksi @ItachiSan , sedangkan Code memerlukan pengaturan itu. Mungkin kita bisa melakukan apapun yang mereka lakukan.

@tokopedia
@Tokopedia
Saya melihat ke Eclipse dan pohon sumber sedikit. Sayangnya, saat ini saya tidak dapat menginstal salah satu dari ini di sistem saya sehingga pengetahuan dan pengalaman saya dibatasi oleh Google ;-) Ingatlah itu jika saya melewatkan sesuatu. Berikut ini sinopsis / perbedaan dasar:

Eclipse: EGit plug-in: berisi Java git client, ssh client tampaknya internal, memerlukan impor kunci jika ada kunci

SourceTree: mendapatkan klien grafis, membutuhkan klien ssh eksternal (dari gambar di bawah mengasumsikan plink pada Windows) @BeginnerForLife Saya pikir pengaturan ini tidak jauh dari persyaratan saat ini.

image

VSC: Membutuhkan git / ssh eksternal

@andrewducker deskripsi Anda melacak komentar saya, kecuali Kode mengimplementasikan git dan SSH (termasuk pembuatan dan manajemen kunci), saya tidak yakin ada banyak di antaranya. Meskipun ini bisa dilakukan, saya skeptis bahwa tim ingin menarik keduanya. @joaomoreno dapat berbicara tentang itu.
Dari sudut pandang praktis saya ingin menunjukkan yang berikut:

  • Pengalaman git "yang mudah dibawa-bawa" lebih selaras dengan penggunaan HTTPS bawaan, masih memerlukan git eksternal
  • Untuk situasi kerja di mana SSH diperlukan, saya berpendapat bahwa ada kemungkinan besar kebijakan dan ssh
    alat sudah berlaku, itulah yang saya alami di berbagai perusahaan tempat saya bekerja.
  • Dengan asumsi seseorang setuju dengan hal di atas, penggabungan ke alat eksternal akan menjadi skenario yang lebih mungkin daripada
    menyiapkan ssh / git dari awal atau mandiri.
  • Untuk memperjelas, saya sama sekali tidak ingin menyiratkan ssh tidak berguna dan / atau tidak diperlukan, saya hanya mengatakan VSC berfungsi dan bekerja cukup mudah dengan mengarahkan git ke klien SSH lokal.
  • Saya pikir ini mungkin bisa dicapai dengan perpanjangan waktu

Mengulangi diri saya sendiri, tanpa kedua git / ssh internal ke kode, saya belum menentukan opsi yang lebih rendah. Saya benar-benar ingin mengerjakan ini, tetapi itu harus sejalan dengan tujuan tim dan mendapatkan restu dari @joaomoreno pada khususnya.

@cleidigh Saya tidak mengerti apa rencananya.

@joaomoreno
Saya berharap mendapatkan lebih banyak tanggapan dari pihak lain, tetapi membutuhkan pendapat / preferensi Anda tentang kemungkinan rencana.
Untuk memperjelas, Kode tampaknya berfungsi dengan baik untuk akses kunci pribadi SSH melalui git hanya dengan sedikit konfigurasi eksternal. Beberapa di sini menyarankan integrasi yang lebih besar dan peningkatan pengalaman langsung.

Beberapa kemungkinan pendekatan:

1- Implementasikan git / ssh set up helper / Wizard - Temukan ssh, setel GIT_SSH - penambahan internal
2- Sama seperti 1 diimplementasikan sebagai ekstensi
3- Perluas di atas untuk mengoordinasikan unduhan SSH / git untuk pengaturan awal
4- Menerapkan klien / alat SSH - penambahan internal
5- Sama seperti 4 diimplementasikan sebagai ekstensi
6- Implementasikan git / SS H secara internal - mirip dengan eclipse / egit

Saya pikir nomor 1 sudah cukup (mungkin 3) meskipun faktanya itu tidak menerapkan semua yang dibicarakan orang. Opsi 4-6 tampak seperti terlalu banyak usaha dan perubahan besar pada komponen utama.

Preferensi @joaomoreno / all?

Mungkin merupakan ide yang baik untuk mencoba menggunakan VS Code dengan Git di Windows dan mengidentifikasi masalah. Bagi saya, masalah utamanya adalah otentikasi.

Opsi 1 pasti favorit saya.

@Tokopedia
Jika kita memiliki beberapa penemuan dan pengaturan helper / ssh, apakah itu membantu?
Saya memang menyiapkan ssh untuk git untuk Windows, selain menginstal klien (saya sudah memilikinya), saya baru saja mengatur GIT_SSH
juga menambahkan sidik jari kunci dengan agen.

Berfokus pada opsi satu per preferensi @joaomoreno :

  • Deteksi ruang kerja dengan repositori menggunakan ssh, start helper
  • Berikan perintah untuk memulai helper kapan saja
  • Cari SSH yang diinstal, periksa variabel lingkungan disetel
  • Peringatkan pengguna jika SSH tidak ditemukan, sarankan / tunjuk klien yang sesuai
  • menawarkan untuk mengatur variabel lingkungan
  • meminta pengguna untuk kunci pribadi untuk menggunakan dan menambahkan sidik jari ke agen

Saya percaya tetapi tidak bisa menjanjikan semua hal di atas, itu praktis. Dengan asumsi tidak ada yang punya ide cemerlang lainnya
Saya pikir akan lebih baik untuk membuat prototipe di atas.

Umpan balik tambahan diterima.

Ya, saya pikir poin-poin itu harus mencakupnya. Yang terakhir itu khususnya (minta pengguna ...) seharusnya menyelesaikan banyak masalah orang.

@Tokopedia
Terima kasih. Saya akan mulai dengan pendekatan ini dan mudah-mudahan orang lain akan setuju dengan masukan lainnya.
Saya rasa saya akan memposting pointer ke repositori saya sebelum saya melakukan PR untuk melihat apa yang dipikirkan orang. Periksa kembali di sini
untuk melacak kemajuan saya.

Saya setuju bahwa (1) adalah pendekatan terbaik. Dan pada dasarnya itulah yang saya lakukan saat ini - mulai ssh-agent jika belum berjalan dan setel variabel lingkungan, kemudian mulai VS-Code dari baris perintah itu, sehingga mengambil variabel lingkungan.

Jika VS Code dapat memeriksa bahwa SSH-Agent belum berjalan dan kemudian memulainya jika perlu, itu akan bagus.

Saya menggunakan Modul Git PowerShell untuk melakukan semua ini - tetapi menggunakan logika dari:
https://help.github.com/articles/working-with-ssh-key-passphrases/
Jadi semoga itu akan berhasil, dari sudut pandang Node (meskipun mungkin Anda perlu memeriksanya berfungsi di semua OS)

@andrewducker cc: semua

Pembaruan: Saya harus kembali ke PR sebelumnya tetapi, saya sebenarnya telah membuat banyak kemajuan dalam hal ini:

  • Selain hal-hal mudah seperti memeriksa / menyetel GIT_SSH, memeriksa klien git, agen kunci
  • Juga ditemukan bahwa sepertinya agen kunci Windows akan mengizinkan penambahan kunci setelah startup
  • Saya pikir kita dapat menginstal kunci baru di bawah Kode meluncurkan agen kunci yang dengan sendirinya akan meminta kata sandi.
  • Eksperimen berikutnya adalah jika saya dapat mendeteksi login SSH yang gagal

Harus bisa kembali ke ini dalam satu atau dua hari.

Sama di sini di macOS High Sierra dengan kunci pribadi default yang dilindungi frasa sandi. Frasa sandi disimpan di rantai kunci OS selama sesi logon. Ketika saya me-reboot Mac saya, saya harus memasukkannya kembali sebelum git pull / git push untuk keamanan tambahan dan frasa sandi tidak lagi diminta sejak saat itu sampai saya log off. Berikut adalah perilaku terminal ketika saya berinteraksi dengan repo jarak jauh untuk pertama kalinya:

$ cd /path/to/repo
$ git pull
Enter passphrase for key '/Users/me/.ssh/id_rsa':
[me typing passphrase and pressing enter]
Updating 3e97c76..65a959c

Namun, ketika VSCode yang mencoba menarik sesuatu setelah reboot, kesalahan ini muncul:

screen shot 2018-02-12 at 11 05 09

Solusinya adalah dengan membuka terminal, arahkan ke repo dan ketik git pull . Bukan bencana, tapi bisa diperbaiki.

__UPD: __ Menariknya, ketika datang untuk meminta kata sandi kunci GPG untuk menandatangani komit baru, VSCode bekerja dengan segera dan menampilkan jendela popup dengan bidang masukan.

Apa statusnya ini?

Saat ini, kesalahan Git: [email protected]: Permission denied (publickey). ditampilkan.

Pengguna yang membuat pasangan kunci di ~\.ssh dapat mengotentikasi melalui baris perintah dengan memasukkan frasa sandi untuk pasangan kunci tetapi tidak dari dalam VS Code.

@cleidigh semoga beruntung?
Adakah yang tahu bagaimana kami dapat mencegat acara permintaan kata sandi? Saya pikir begitu saya mencegatnya, saya mungkin memiliki kesempatan untuk melakukan apa yang dilakukan atom dan menyediakan kotak teks untuk digunakan. Tapi atm aku kehilangan ide.

Saya memiliki semua jenis masalah kredensial, sampai saya menyadari bahwa masalahnya bukan dengan VSCode tetapi dengan lingkungan. Jika Anda telah mengonfigurasi ssh, git, dan sebagainya dengan benar, Anda tidak akan mengalami masalah, itu berlaku untuk Linux dan Windows. Dan jika terjadi kesalahan, Anda selalu dapat memaksanya melalui terminal.

Saya tidak perlu menyiapkan lingkungan untuk IDE lain.
Di Eclipse, misalnya, saya dapat meluncurkannya secara langsung, dan ketika perlu mengakses repositori git jarak jauh, ia akan meminta kata sandi untuk mendekripsi kunci SSH saya.
Visual Studio Code harus melakukan hal yang sama.

Semua: Perbarui
sementara saya membuat sedikit kemajuan dalam hal ini, saya harus mengesampingkannya karena beberapa alasan jadi saya tidak membuat banyak kemajuan sejak Januari. maaf soal itu. Saya berharap ini terjadi pada bulan Mei.

Ke @ john681611 @andrewducker

Seperti dijelaskan sebelumnya di utas, satu masalah mendasar yang tidak dapat diterapkan "dengan bersih"
meminta atau jenis manajemen kunci apa pun. Ini karena Kode bergantung pada GIT eksternal dan
GIT mengandalkan SSH sistem. Tanpa Kode yang menerapkan ini secara internal (seperti gerhana) kami memiliki opsi terbatas untuk berinteraksi dengan komponen eksternal ini.

Prototipe saya saat ini dapat melakukan hal berikut:

  • periksa apakah ada repositori yang menggunakan SSH jika jadi mulai konfigurasi Wizard untuk di bawah ini:
  • periksa dan minta variabel lingkungan GIT_SSH
  • periksa klien SSH
  • paksa dialog sandi dari klien jika memungkinkan (WIP) Perhatikan prompt ini adalah klien bukan Kode

Saya setuju bahwa akan lebih baik bagi @andrewducker untuk menanggapi seperti Eclipse, tetapi ini berarti tim harus menerapkan sebagian besar fungsi yang sudah diurus.

Catatan: Pendekatan lain mungkin jika kita bisa mendapatkan klien GIT resmi untuk menangani lebih banyak parameter keamanan yang dapat kita gunakan untuk mengontrol SSH. Itu akan menjaga arsitektur saat ini tetap sama

Semua / Perbarui

Saya telah mengerjakan bagian terakhir dan terpenting dari prototipe: askpass shim untuk mengizinkan Kode menyediakan prompt GUI frase sandi asli. Saat ini saya yakin ini akan dimungkinkan dan dalam hubungannya dengan ssh-agent yang sesuai platform, kredensial akan disimpan dengan cara normal.

Masalah saya adalah saya tidak bisa mendapatkan SSH atau GIT untuk menghormati SSH_ASKPASS, GIT_ASKPASS atau core.askpass di bawah GIT Bash atau CMD di Windows. prompt terminal adalah satu-satunya hal yang ditampilkan. Sebagai pengujian paling dasar, saya menetapkan satu atau semua ini ke built-in git-gui - askpass tetapi, ini tidak berfungsi baik meskipun program telah dieksekusi jika diuji dari baris perintah.

Adakah yang menggunakan metode ini untuk mengubah entri frasa sandi di Windows atau skenario lain yang relevan?

Sourcetree baru saja memunculkan terminal juga. Tidak seburuk itu.

Untuk menambah solusi @ValentinH di macOS 10.12 Sierra dan yang lebih baru, hanya petunjuk UseKeychain memperbaiki masalah di komputer saya (macOS 10.13.5 High Sierra Developer Beta, 17F70a). Perintah AddKeysToAgent tampaknya tidak diperlukan. Konfigurasi ini berfungsi untuk saya:

Host github.com
  HostName github.com
  IdentityFile /path/to/your/ssh/private/key
  UseKeychain yes

Apa statusnya ini?

'14581: VS Code memerlukan kunci git ssh untuk dinamai sebagai "id_rsa"' ditutup sebagai duplikat dari masalah ini. Tidak yakin saya melihat bagaimana ini adalah duplikat - "Dukung git dengan kata sandi kunci pribadi". Ini sepertinya masalah yang terpisah.

EDIT: ini hanya perbaikan untuk satu contoh terminal yang saya jalankan; bahkan membuka terminal baru dalam sesi kode yang sama mengakibatkan kesalahan kunci publik lagi

Sepertinya ssh-agent saya telah mati di beberapa titik atau lupa kunci non- "id_rsa" yang saya gunakan untuk git. Jadi saya lari saja:

eval "$(ssh-agent -s)"
ssh-add path/to/my/github/ssh/private/key

dan semuanya kembali normal. Ini adalah urutan perintah yang GitHub perintahkan untuk Anda jalankan saat menyiapkan kunci SSH baru .

Saya akui saya belum membaca sebagian besar utas ini, tetapi bagi saya ini berhasil.

@cleidigh @joaomoreno ini mungkin bukan bug tetapi lebih tepatnya mengatur kunci ssh dengan tidak benar, terutama di macOS. Sierra secara radikal mengubah cara penyimpanan kunci dalam sesi

saya baru saja menyelesaikannya ketika saya membuat ulang sshkey baru tanpa frasa sandi di atasnya. Saya kira mungkin vscode tidak dapat membuka shell untuk membiarkan Anda mengetikkan kata sandi.

Hanya perlu menambahkan kunci saya ke gantungan kunci Mac dengan ssh-add -K ~/.ssh/id_rsa ; ganti id_rsa dengan kunci Anda jika Anda tidak menggunakan default.

Solusi untuk Windows 10:

  1. Jadikan Git menggunakan OpenSSH yang disertakan dengan Windows, bukan yang disertakan dengan Git.
    git config --global core.sshCommand "C:/Windows/System32/OpenSSH/ssh.exe"
  2. Setel layanan ssh-agent (bukan yang disertakan dengan git) untuk berjalan secara otomatis.
    Buka Task Manager, tab Services, klik Open Services.
    Temukan Agen Otentikasi OpenSSH, buka properti, atur Jenis Startup ke Otomatis, tekan OK.
    Juga mulai layanan atau mulai ulang komputer Anda.
  3. Tambahkan kunci yang dilindungi kata sandi Anda ke agen.
    ssh-add
    Ini harus secara otomatis mengambil kunci yang disimpan di C: \ Users \% USERNAME% \. Ssh yang mana ssh-keygen membuatnya.
    Masukkan kata sandi Anda saat diminta.

Catatan: Jika, saat menginstal Git untuk Windows, Anda memilih opsi untuk menambahkan perintah bash ke PATH, perintah ssh-add mungkin mengarah ke eksekusi yang salah. Jika demikian, Anda dapat menjalankan secara manual yang disertakan agar kunci Anda ditambahkan ke agen:
C:\Windows\System32\OpenSSH\ssh-add.exe

Sekarang agen autentikasi OpenSSH bawaan akan berjalan saat start up dengan kunci yang dilindungi kata sandi Anda tidak terkunci, dan Git akan menggunakan Windows OpenSSH, bukan miliknya sendiri. Jadi tidak perlu mengetikkan kata sandi Anda setiap saat, tidak perlu memulai agen ssh secara manual, dan tidak perlu memulai VS Code dari baris perintah.

Persis seperti yang diketahui LynnScarlett, tidak ada cara untuk memasukkan frasa sandi untuk kunci tersebut dan menggunakan rantai kunci tidak aman, jadi apakah VSC akan menambahkan dukungan untuk fitur dasar ini?

Saya gagal melihat bagaimana Keychain tidak aman. Selain itu, IDE populer memang memungkinkan untuk memasukkan kata sandi, sehingga VSC dapat sangat mendukung kedua metode entri

Maksud saya ssh-agent, saya mungkin membingungkan dua hal, saya tidak yakin :)

Ssh-agent hanya "tidak aman" dalam arti memuat kunci per sesi. Anda memiliki masalah lain jika Anda memiliki komputer yang disusupi

Ini menjelaskan ketidakamanan menggunakan ssh-agent secara lebih rinci:
http://rabexc.org/posts/pitfalls-of-ssh-agents
Bersulang!

Ini semua bermuara pada: jangan mempercayai mesin Anda kepada orang lain yang memiliki akses root - yang seharusnya tidak Anda lakukan. Jadi sekali lagi: jika ssh-agent dikompromikan karena detail dalam artikel itu, Anda memiliki masalah yang lebih besar

Solusi @whatsyourgithub berhasil untuk saya. Tapi saya rasa itu bukan solusi terbaik.

Versi VS Code: Code 1.27.2 (f46c4c4, 2018-09-12T16: 17: 45.060Z)
Versi OS: Windows_NT x64 10.0.17134
git versi 2.19.0.windows.1

Masih tidak bekerja.

Sudah dua tahun sekarang, dan masih belum ada perbaikan untuk ini. Masalah yang sama berlaku untuk Atom, jadi saya rasa ini bukan sesuatu yang mudah ditambahkan? Yang saya inginkan hanyalah Push (dengan frasa sandi) di menu dropdown More Actions ... git di panel kontrol sumber.

Saya senang mengetikkan kata sandi pada setiap dorongan, saya hanya tidak ingin pergi ke baris perintah dan mengetik perintah git mentah.

Sudah dua tahun sekarang, dan masih belum ada perbaikan untuk ini. Masalah yang sama berlaku untuk Atom, jadi saya rasa ini bukan sesuatu yang mudah ditambahkan? Yang saya inginkan hanyalah Push (dengan frasa sandi) di menu dropdown More Actions ... git di panel kontrol sumber.

Saya senang mengetikkan kata sandi pada setiap dorongan, saya hanya tidak ingin pergi ke baris perintah dan mengetik perintah git mentah.

Coba kloning repo dengan https, bukan ssh. Itu membuat VS Code meminta username dan password untuk saya.

Saya baru saja datang dari Atom untuk memeriksa Github Pull Request di VS Code dan yang pertama dipikirkan adalah

Harap pastikan Anda memiliki hak akses yang benar
dan repositori ada.

git show: index.html
git pull --tags origin master
git show: index.html
[email protected] : Izin ditolak (publickey).
fatal: Tidak dapat membaca dari repositori jarak jauh.
Harap pastikan Anda memiliki hak akses yang benar
dan repositori ada.

jadi saya tidak akan menggunakan opsi hanya dengan kunci ssh tanpa mengetikkan kata sandi saya juga.
Jadi saya akan kembali ke kode VS dan ekstensi Github Pull Request nanti.
Saya suka apa yang dilakukan komunitas sejauh ini dan saya berharap dapat menggunakannya di masa mendatang dengan preferensi keamanan saya.

Coba kloning repo dengan https, bukan ssh. Itu membuat VS Code meminta username dan password untuk saya.

Terima kasih, itu juga berhasil untuk saya. Dan jika Anda menginstal Git untuk pengelola kredensial Windows dan mengetikkan perintah berikut ke dalam git bash shell dalam kode VS:
git config --global credential.helper manager
Kemudian menyinkronkan dan menarik pekerjaan tanpa harus memasukkan kembali ID pengguna dan kata sandi Gitlab.

Akan lebih baik jika seseorang dapat melakukan hal yang sama untuk SSH, mengingat itu adalah jalur repo Gitlab default.

@whatsyourgithub , ingin menggunakan solusi Anda (terlihat lebih baik daripada primitif dan bermasalah "luncurkan VSC melalui command prompt") tetapi saya mendapatkan pesan kesalahan VSC:
Git: tidak ada identitas seperti itu: /C/Users/myuser/.ssh/myrsaKey_rsa
Padahal filenya ada di sana.
Dan, satu hal lagi ... ketika mencoba C: \ Windows \ System32 \ OpenSSHssh-add.exe, saya juga mendapatkan file atau direktori seperti itu.
Saya menggunakan VSCode PowerShell untuk mengetik perintah ini
Ada ide?

Saya beralih ke https daripada SSH. Itulah satu-satunya cara agar saya bisa bermain bagus. Menariknya, Github sebenarnya merekomendasikan penggunaan https daripada SSH.

@whatsyourgithub , ingin menggunakan solusi Anda (terlihat lebih baik daripada primitif dan bermasalah "luncurkan VSC melalui command prompt") tetapi saya mendapatkan pesan kesalahan VSC:
Git: tidak ada identitas seperti itu: /C/Users/myuser/.ssh/myrsaKey_rsa
Padahal filenya ada di sana.
Dan, satu hal lagi ... ketika mencoba C: \ Windows \ System32 \ OpenSSHssh-add.exe, saya juga mendapatkan file atau direktori seperti itu.
Saya menggunakan VSCode PowerShell untuk mengetik perintah ini
Ada ide?

Saya akan mencoba membuka Powershell di luar VS Code terlebih dahulu, meskipun itu tidak masalah.

OpenSSH seharusnya diinstal dengan versi terbaru Windows 10. Coba perbarui.
Jika tidak berhasil, coba buka Pengaturan> Aplikasi> Aplikasi dan Fitur> Kelola fitur opsional> Tambahkan fitur dan cari OpenSSH.

@whatsyourgithub , ingin menggunakan solusi Anda (terlihat lebih baik daripada primitif dan bermasalah "luncurkan VSC melalui command prompt") tetapi saya mendapatkan pesan kesalahan VSC:
Git: tidak ada identitas seperti itu: /C/Users/myuser/.ssh/myrsaKey_rsa
Padahal filenya ada di sana.
Dan, satu hal lagi ... ketika mencoba C: \ Windows \ System32 \ OpenSSHssh-add.exe, saya juga mendapatkan file atau direktori seperti itu.
Saya menggunakan VSCode PowerShell untuk mengetik perintah ini
Ada ide?

Saya akan mencoba membuka Powershell di luar VS Code terlebih dahulu, meskipun itu tidak masalah.

OpenSSH seharusnya diinstal dengan versi terbaru Windows 10. Coba perbarui.
Jika tidak berhasil, coba buka Pengaturan> Aplikasi> Aplikasi dan Fitur> Kelola fitur opsional> Tambahkan fitur dan cari OpenSSH.

Hai.
Terima kasih sudah membalas.
OpenSSH (klien) sudah terpasang.
Saya mengulangi prosedur menggunakan PowerShell mandiri tetapi saya terus mendapatkan pesan kesalahan
no such identity: /C/Users/<user>/.ssh/RSAPRIVKEY_rsa: No such file or directory
APAKAH ini terkait dengan kepemilikan RSAPRIVKEY_rsa? Saya tidak mengeluarkan kunci menggunakan PowerShell tetapi menyalinnya dari tempat lain (bagaimanapun, ini bekerja dengan Source tree atau dengan GUI Git)

@whatsyourgithub , ingin menggunakan solusi Anda (terlihat lebih baik daripada primitif dan bermasalah "luncurkan VSC melalui command prompt") tetapi saya mendapatkan pesan kesalahan VSC:
Git: tidak ada identitas seperti itu: /C/Users/myuser/.ssh/myrsaKey_rsa
Padahal filenya ada di sana.
Dan, satu hal lagi ... ketika mencoba C: \ Windows \ System32 \ OpenSSHssh-add.exe, saya juga mendapatkan file atau direktori seperti itu.
Saya menggunakan VSCode PowerShell untuk mengetik perintah ini
Ada ide?

Saya akan mencoba membuka Powershell di luar VS Code terlebih dahulu, meskipun itu tidak masalah.
OpenSSH seharusnya diinstal dengan versi terbaru Windows 10. Coba perbarui.
Jika tidak berhasil, coba buka Pengaturan> Aplikasi> Aplikasi dan Fitur> Kelola fitur opsional> Tambahkan fitur dan cari OpenSSH.

Hai.
Terima kasih sudah membalas.
OpenSSH (klien) sudah terpasang.
Saya mengulangi prosedur menggunakan PowerShell mandiri tetapi saya terus mendapatkan pesan kesalahan
no such identity: /C/Users/<user>/.ssh/RSAPRIVKEY_rsa: No such file or directory
APAKAH ini terkait dengan kepemilikan RSAPRIVKEY_rsa? Saya tidak mengeluarkan kunci menggunakan PowerShell tetapi menyalinnya dari tempat lain (bagaimanapun, ini bekerja dengan Source tree atau dengan GUI Git)

BAIK. Menyelesaikannya .. Di file ./ssh/config saya memiliki jalur ke kunci ssh s C: \ Users \.ssh \ RSAKEY_rsa dan mengubahnya menjadi ~ / .ssh / RSAKEY_rsa
Kemudian hanya harus mendaftarkan kunci dan itu saja.
Terima kasih

@whatsyourgithub , maaf mengganggu lagi. Saya mencoba membantu kolega saya dan dia tidak berhasil (melakukan seperti yang Anda sarankan di atas bermanfaat untuk saya tetapi tidak untuk dia). Ini gejalanya:
Dia dapat melakukan pengambilan git dari konsol PS tetapi ketika dia mendorong atau menyinkronkan menggunakan gitacora (plugin untuk menyinkronkan secara otomatis - yang juga saya gunakan tanpa masalah) dia mendapatkan pesan kesalahan berikut:
Permission denied (publickey).
Kita tahu bahwa kunci tersebut telah ditambahkan oleh OpenSSH karena C:\Windows\System32\OpenSSH\ssh-add.exe -L mengambil kunci publiknya dan karena jika kita menggunakan perintah git fetch dari PS, itu berfungsi.
Ada ide tentang bagaimana membantunya mendiagnosis / memperbaiki?

@whatsyourgithub , maaf mengganggu lagi. Saya mencoba membantu kolega saya dan dia tidak berhasil (melakukan seperti yang Anda sarankan di atas bermanfaat untuk saya tetapi tidak untuk dia). Ini gejalanya:
Dia dapat melakukan pengambilan git dari konsol PS tetapi ketika dia mendorong atau menyinkronkan menggunakan gitacora (plugin untuk menyinkronkan secara otomatis - yang juga saya gunakan tanpa masalah) dia mendapatkan pesan kesalahan berikut:
Permission denied (publickey).
Kita tahu bahwa kunci tersebut telah ditambahkan oleh OpenSSH karena C:\Windows\System32\OpenSSH\ssh-add.exe -L mengambil kunci publiknya dan karena jika kita menggunakan perintah git fetch dari PS, itu berfungsi.
Ada ide tentang bagaimana membantunya mendiagnosis / memperbaiki?

Sepertinya kuncinya tidak ditautkan ke akun githubnya, atau akun githubnya tidak ditambahkan sebagai kolaborator di repo.

Sepertinya kuncinya tidak ditautkan ke akun githubnya, atau akun githubnya tidak ditambahkan sebagai kolaborator di repo.

Saya mengelola server bitbucket dan saya menambahkan kunci pubnya di sana (dan sebenarnya dia dapat mengakses fetch dan push ketika dia menggunakan baris perintah melalui PowerShell).
Atau apakah itu sesuatu yang tidak saya mengerti dari jawaban Anda?

Hanya perlu menambahkan kunci saya ke gantungan kunci Mac dengan ssh-add -K ~/.ssh/id_rsa ; ganti id_rsa dengan kunci Anda jika Anda tidak menggunakan default.

macOS High Sierra vs kode
[email protected] : Izin ditolak (publickey).
fatal: Tidak dapat membaca dari repositori jarak jauh.

Memberi tag ini karena ini memperbaiki masalah dengan git terintegrasi yang tidak berfungsi dalam vscode meskipun berfungsi dengan baik dari baris perintah.

@whatsyourgithub Sepertinya berhasil melalui git config --global core.sshCommand "C:/Windows/System32/OpenSSH/ssh.exe" setelah saya membuat id_rsa baru.

  1. Tetapi kuncinya memiliki kata sandi, ketika saya mendorong tidak ada dialog jendela prompt untuk membiarkan saya memasukkan kata sandi saya.
  2. Jika saya menggunakan kunci yang keluar dari PC saya melalui ssh-add .ssh\id_rsa , ada kesalahan. Mengapa saya tidak dapat menambahkan kunci? Saya ingin menggunakan satu kunci yang sama yang telah saya tambahkan sebelumnya.
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
Permissions for 'D:/ablob/.ssh/id_rsa' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "D:/ablob/.ssh/id_rsa": bad permissions
[email protected]: Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

OS: Windows 10
VSC: 1.28

Ada pembaruan?

Ada rencana untuk menangani ini dalam waktu dekat?

Menurut dokumentasi VS Code (https://code.visualstudio.com/docs/editor/versioncontrol):

Bisakah saya menggunakan otentikasi SSH Git dengan VS Code?
Ya, meskipun VS Code bekerja paling mudah dengan kunci SSH tanpa frasa sandi. Jika Anda memiliki kunci SSH dengan frasa sandi, Anda harus meluncurkan VS Code dari prompt Git Bash untuk mewarisi lingkungan SSH-nya.

Halaman ini bertanggal 12/12/2018.

Jadi saya baru saja membuat kunci ssh baru tanpa frasa sandi (dengan membiarkannya kosong saat diminta dan menimpa yang sebelumnya), menambahkannya ke akun saya di GH dan juga menambahkan identitas ke ssh-agent dengan menjalankan ssh-add.exe ~\.ssh\id_rsa . Sekarang, semuanya bekerja.

Jika orang lain dapat mengonfirmasi hal ini, saya sarankan untuk menutup topik ini karena dokumentasi resmi VS Code sudah secara eksplisit menyatakan bahwa ini hanya akan berfungsi dengan frasa sandi dengan meluncurkan VS Code dari git-bash.

Jika orang lain dapat mengonfirmasi hal ini, saya sarankan untuk menutup topik ini karena dokumentasi resmi VS Code sudah secara eksplisit menyatakan bahwa ini hanya akan berfungsi dengan frasa sandi dengan meluncurkan VS Code dari git-bash.

Nah, dokumentasinya mengatakan "paling mudah", bukannya tidak akan berfungsi sama sekali ketika kunci memiliki kata sandi, dan sarannya untuk meluncurkan VS Code dari prompt Git Bash hanya diperlukan bagi mereka yang menggunakan Git-for-Windows ' Agen SSH untuk mengelola kunci mereka.

Saya benar-benar dapat mengonfirmasi bahwa saya menggunakan agen SSH Windows (bukan yang disertakan dengan Git untuk Windows), memuat kunci SSH (dilindungi kata sandi) saya ke dalamnya, dan kemudian meluncurkan VS Code secara normal (bukan dari prompt perintah tertentu) dan Saya dapat melakukan git push / pull dengan sukses ke repo yang membutuhkan kunci saya.

Saya mengonfirmasi bahwa membuka VS Code melalui git bash akan meminta kunci ssh dan dalam kode VS akan meminta kata sandi ssh Anda di terminal.

Saya memiliki masalah serupa dengan VSCode pada Windows 10 yang tidak mendorong / menarik dari _ ssh: // repo_ sementara itu mungkin di terminal.

Saya menggunakan CMDer dengan git-for-windows dan VSCode dikonfigurasi dengan git.path yang menunjuk ke binari ini. Saya juga memiliki file konfigurasi ssh di direktori _% USERPROFILE% \. Ssh_ dengan semua opsi yang diperlukan dan file Identitas diatur ke file kunci publik. KeePass dengan KeeAgent melayani kuncinya.

Prosedur yang disebutkan sebelumnya untuk pertama kali menjalankan terminal (CMDer) dan kemudian menjalankan Kode darinya berfungsi dengan baik tetapi saya tidak menyukainya. Jadi saya mencoba (berhasil) pendekatan lain:
Di direktori git.exe saya telah membuat file cmd:

<strong i="10">@echo</strong> off
set SSH_AUTH_SOCK=/path/to/my/sock.file
%~dp0git.exe %1 %2 %3 %4 %5 %6 %7 %8 %9

(Jalur SSH_AUTH_SOCK harus memiliki garis miring ke depan) dan menunjuk opsi git.path dalam Kode untuk itu.

Sekarang Kode dimulai, sepertinya membaca file _ ~ / .ssh / config_ tanpa "peretasan" tambahan, dan dapat menggunakan agen.

Edit:
Saya kira, mengatur variabel lingkungan SSH_AUTH_SOCK secara global juga akan membantu - dengan biaya kunci yang dapat diakses oleh setiap aplikasi ...

"you'll need to launch VS Code from a Git Bash prompt to inherit its SSH environment."

Salah satu hal paling biasa-biasa saja yang pernah saya dengar dari Microsoft; Saya tidak harus memulai VS Code dari baris perintah tertentu untuk membuat ssh berfungsi; mungkin mencoba menerapkan solusi yang tepat.

jaminan simpanan? Betulkah?

Hal ini menyebabkan saya beralih ke PowerShell dan Posh-Git yang bekerja dengan cukup baik. Agar ssh-agent bekerja dengan lancar saya harus menambahkan yang berikut ini ke $profile.CurrentUserAllHosts (default ke C:\Users\USERNAME\Documents\WindowsPowerShell\profile.ps1 ).

Import-Module posh-git
Set-Alias ssh-agent "$env:ProgramFiles\git\usr\bin\ssh-agent.exe"
Set-Alias ssh-add "$env:ProgramFiles\git\usr\bin\ssh-add.exe"
Set-Alias ssh "$env:ProgramFiles\git\usr\bin\ssh.exe"
Start-SshAgent -Quiet

Jika orang lain dapat mengonfirmasi hal ini, saya sarankan untuk menutup topik ini karena dokumentasi resmi VS Code sudah secara eksplisit menyatakan bahwa ini hanya akan berfungsi dengan frasa sandi dengan meluncurkan VS Code dari git-bash.

Saya harus tidak setuju di sini: masalah ini adalah tentang kurangnya dukungan frasa sandi SSH yang tepat di VS Code, dan solusi yang terdokumentasi hanyalah itu - solusi. Sudah terlalu banyak godaan bagi pengguna yang malas untuk melewatkan keamanan frasa sandi yang baik, jadi alat modern apa pun akan memudahkan untuk Melakukan Hal yang Benar.

Berdasarkan apa yang disarankan orang lain di atas, saya baru saja membuat file skrip bash (mis. projectName.sh ) dan saya menulis yang berikut di dalamnya:
"location/to/Code.exe" "location/to/project"

Sekarang yang harus saya lakukan adalah mengklik dua kali pada file tersebut untuk membuka VSCode dan bekerja dengan sertifikat dengan frasa sandi.

BTW: Jika membantu orang lain menemukan masalah ini, saya juga harus: git config --global http.sslBackend schannel seperti yang dijelaskan di sini .

Saya bingung bahwa, setelah dua tahun yang panjang, hal yang mendasar seperti "bekerja dengan git menggunakan ssh menggunakan kunci yang MEMILIKI frasa sandi" belum ditangani tanpa menggunakan solusi yang tampak jelek. VSCode adalah IMHO editor yang hebat, tetapi "fitur" ini sangat dibutuhkan. Harap prioritaskan

Berikut adalah posting lama yang saya lemparkan di stackoverflow yang mungkin bisa membantu; satu opsi adalah menggunakan Windows Credential Manger: https://stackoverflow.com/questions/35110079/git-bash-pageant-not-using-keys/43313491#43313491

Saya kira pertanyaannya adalah apakah VSCode harus bertanggung jawab atas penanganan kredensial SSH / HTTPS sebagai manajer keystore. Sepertinya ini harus ditangani oleh OS, program pihak ketiga, atau konfigurasi git yang tepat yang bercampur dengan dua poin pertama.

Sebanyak saya suka suara fitur ini, sepertinya Unix dan Windows harus memiliki cara untuk menangani masalah ini tanpa menambahkan ini ke VSCode.

Tidak yakin apakah ada sesuatu di artikel github ini yang membantu: https://help.github.com/articles/connecting-to-github-with-ssh/
Pada akhirnya terdengar seperti mereka memberitahu Anda untuk menggunakan bash di windows / alternatif bash windows lainnya, yang kemudian membuat orang kembali ke masalah yang sama ini dengan solusi hacky: \

@ctsstc Ya, saya telah menginstal Git Credentials Manager untuk Windows, tetapi untuk beberapa alasan, ini tidak berfungsi. Saya sadar bahwa ini mungkin bukan tanggung jawab untuk VSCode. Misalnya, di Android Studio dan IDE berbasis IDEA, mereka hanya peduli untuk memanggil biner git, dan satu-satunya integrasi yang mereka miliki adalah ketika operasi memerlukan frasa sandi, IDE akan menyimpannya dengan aman dan meneruskannya ke Git - mungkin ini adalah pendekatan yang bagus. Mungkin ini satu-satunya hal yang mereka lewatkan?

@ctsstc Sangat tidak setuju, Anda tidak dapat mengimplementasikan antarmuka pengguna ke program CLI -berarti GIT dalam kasus ini- dan kemudian mengklaim bahwa ketika program membutuhkan input bukan lagi masalah Anda ; Jika Anda tidak ingin orang bergantung pada VC untuk menggunakan git maka Anda tidak harus mengintegrasikan git dari awal, jangan setengah-setengah perangkat lunak khususnya jika seharusnya dicadangkan oleh Microsoft, dan khususnya jangan setengah -melewati praktik terbaik keamanan yang telah berlangsung puluhan tahun seperti kunci SSH dengan frasa sandi.

Saya kira poin penting di sini adalah bahwa Atom akan mengingat kata sandi SSH untuk git repo. Tentunya vscode dapat melakukan hal yang sama karena keduanya didasarkan pada mesin pengeditan yang sama?

Saya kira pertanyaannya adalah apakah VSCode harus bertanggung jawab atas penanganan kredensial SSH / HTTPS sebagai manajer keystore.

Saya tidak percaya itu harus, tetapi saya juga tidak percaya itulah yang diminta di sini. Seperti yang ditunjukkan @Ivanca , VSC telah memilih untuk menampilkan UI di atas git, jadi pertanyaannya adalah seberapa banyak fungsionalitas git harus diekspos melalui UI tersebut. Saya tidak berharap setiap operasi git yang tidak jelas tersedia melalui VSC, tetapi tarik / dorong sangat mendasar - saya rasa VSC tidak dapat mengklaim untuk mendukung sepenuhnya tanpa memberikan lem UI pada tantangan frasa sandi yang mendasarinya.

Jadi hasil yang diharapkan adalah meminta kata sandi. Saya pikir itu adalah pertanyaan / fitur yang masuk akal.

Daripada menampilkan:

Permission denied, please try again.
Permission denied (publickey,password).

Saya merasa seperti saya telah melihat fungsi ini baru-baru ini di Mac beberapa hari yang lalu, tetapi mungkin tidak diterapkan di Windows, atau mungkin meminta kata sandi sistem saya untuk mengakses keystore sistem.

Edit, coba ini di Mac:

image

Jadi sepertinya ini didukung di Mac tetapi tidak di Windows (saya anggap masalah ini masih ada), jadi fiturnya memiliki paritas antara dua OS.

Ada pembaruan tentang ini? Sudah 2 tahun sejak masalah ini dilaporkan dan masih belum bisa membuat VSCode bekerja dengan Git SSH:
image

@ctsstc Saya dapat mengonfirmasi bahwa ini berfungsi di Mac pada tab terminal. Apa yang kurang adalah meminta kata sandi saat menggunakan fungsi tarik / dorong pengambilan dari GUI. Ini hanya mengabaikan fakta bahwa Anda memiliki kata sandi pada kunci Anda dan mengirimkan kata sandi null / nil yang menyebabkan operasi git gagal.

Saya yakin ini harus diatasi, terlepas dari apakah VSC memutuskan untuk menyimpan kredensial frasa sandi. Jangan gagal jika ada frasa sandi pada kunci rsa, minta kuncinya.

kapan ini akan terjadi?

Apakah ini akan diperbaiki? Masalah yang sama di windows

Tidak terlihat penuh harapan. Saya menyerah dan beralih dari SSH ke https.

Pekerjaan saya saat ini: Saya biasanya memiliki terminal yang terbuka di VSCode (menggunakannya untuk berinteraksi dengan npm, dll.), Jadi saya hanya melakukan git push dari sana. Ini bukan cara _should_ bekerja, tetapi setidaknya meminta saya memasukkan sandi.

Di macOS, saya menambahkan ini ke ~/.ssh/config di bagian paling akhir (yang penting, jangan letakkan apa pun di bawah):

Host *
   AddKeysToAgent yes
   UseKeychain yes 

Kemudian saya melakukan git pull sehingga macOS akan meminta kata sandi ssh saya. Setelah itu, macOS tidak pernah meminta saya lagi untuk kata sandi, oleh karena itu kontrol versi VSCode berfungsi sebagaimana mestinya.

Semoga bisa membantu seseorang.
Bersulang!

Solusi lainnya:

  • Gunakan plink from putty dan bukan ssh sebagai git ssh commad, lalu gunakan pageant untuk memuat kunci
  • Gunakan git over http / https, bukan git over ssh

Adakah yang pernah mencoba salah satu dari ini di Windows?

https://github.com/PowerShell/openssh-portable

Saya menggunakan win32-openssh, seperti di atas, menyelesaikannya dengan mendorong git dari terminal. Kurangnya ssh: // jalur yang dikenali adalah masalah yang sudah saya ajukan yang terkait dengan ini. Kasus penggunaan utama saya adalah menggunakan ekstensi sshfs yang tidak dapat digunakan oleh git dan ekstensi lain seperti python karena mereka tidak tahu cara menafsirkan ssh: //

Apakah ada rencana untuk mendukung ini?

Ini masih menjadi masalah. Solusi ini bukanlah pilihan untuk semua orang; misalnya mesin saya dapat (berpotensi) diakses oleh orang lain dan oleh karena itu saya tidak akan membuka kunci saya. Dalam kasus saya, git pada baris perintah hanya meminta kata sandi, menurut saya VS Code harus melakukan hal yang sama dalam munculan.

Sebenarnya agak kaget ini bukan fitur setelah 2 tahun, masih bertanya-tanya mengapa ini belum diambil dan diprioritaskan.

Saat ini menggunakan versi VSC 1.34.0
qwe
dan masalah belum diperbaiki.

Masih mengalami masalah ini di sini juga, di Windows 10. Saya menyingkirkan Putty sekarang karena OpenSSH disertakan dalam Windows 10, tetapi VS Code sepertinya tidak menghormatinya? Saya harus mendorong dan menarik secara manual melalui terminal di VSCode, yang berfungsi dengan baik, tetapi saya senang bisa mengklik tombol untuk menyinkronkan.

@ arcs- Hal ini tidak mungkin diperbaiki karena git tidak menyediakan cara untuk berinteraksi dengan proses turunan kunci SSH. Jika mesin Anda dapat diakses oleh orang lain, kunci saat Anda jauh dari meja Anda. Jika tidak, Anda dapat memulai ssh-agent di macOS atau Windows untuk mengatasi masalah ini seperti yang dijelaskan di sini: https://help.github.com/en/articles/working-with-ssh-key-passphrases

@ flaw600 Proses ini sepertinya hanya membantu jika saya meluncurkan kode dari jendela git-bash yang sama di mana ssh-agent telah diinisialisasi, yang agak kikuk dan mencegah penggunaan ekstensi klik kanan pada explorer yang banyak digunakan.

Kenyataannya sudah lebih dari 3 tahun berlalu dan tautan ini masih berlaku tampaknya disayangkan.
https://nathan.alner.net/2015/08/24/vs-code-ide-with-passphrased-git-ssh-keys/

Membuka code melalui menu start akan mengabaikan ssh-agent dan gagal untuk menarik / mendorong.

Ada saran? Ini masalah yang cukup besar untuk melakukan pengembangan saat ini vs platform lain.

Menggunakan https telah menjadi solusi unggulan selama beberapa waktu. Setiap bitnya seaman, jika tidak lebih , karena Anda dapat membuat token khusus untuk akses. Manajer kredensial Windows SCM menangani semuanya secara otomatis.

Sebagai bonus, saya cukup yakin HTTPS sebenarnya lebih cepat dari SSH.

@gdamore : Setiap referensi bukti untuk mendukung klaim Anda bahwa HTTPS adalah
lebih cepat dari SSH?

Pada hari Senin, 17 Jun 2019 pukul 11:45, gdamore [email protected] menulis:

Menggunakan https telah menjadi solusi unggulan selama beberapa waktu. Setiap bit sebagai
aman, jika tidak lebih , karena Anda dapat membuat token khusus untuk akses.
Manajer kredensial Windows SCM menangani semuanya secara otomatis.

Sebagai bonus, saya cukup yakin HTTPS sebenarnya lebih cepat dari SSH.

-
Anda menerima ini karena Anda berkomentar.
Balas email ini secara langsung, lihat di GitHub
https://github.com/microsoft/vscode/issues/13680?email_source=notifications&email_token=AFLBAENFUKYEOE3WLKBGCJLP265Q7A5CNFSM4CSXV3P2YY3PNVWWK3TUL52VYNZJK-
atau nonaktifkan utasnya
https://github.com/notifications/unsubscribe-auth/AFLBAEOC5BVCGGJ7EDXTINTP265Q7ANCNFSM4CSXV3PQ
.

Tidak secara khusus dengan git, tetapi dalam penggunaan lain (salinan file besar), kami telah melihatnya. Saya pikir ini benar-benar berkaitan dengan hal-hal yang diatur pada lapisan TCP di mana SSH tampaknya memiliki nilai yang lebih sesuai untuk penggunaan interaktif, sedangkan HTTP cenderung lebih dioptimalkan untuk benar-benar memindahkan file, yang sebenarnya dilakukan git dalam kasus ini.

Saya benci mengatakan ini, tetapi secara ajaib mulai berhasil untuk saya. Tidak yakin apakah itu memulai SSH melalui Powershell, atau CMD - Saya tidak tahu! Sekelompok mencoba dan kemudian secara ajaib berhasil.

Di Windows, Anda dapat menggunakan pageant sebagai agen SSH Anda dan kemudian menetapkan variabel env GIT_SSH menjadi plink . Kedua alat ini adalah bagian dari PuTTY dan juga digabungkan dengan TortoiseGit.

Apakah saya tidak baik di Mac

Pada Rabu, 3 Juli 2019, 11:44 Justin [email protected] menulis:

Di Windows, Anda dapat menggunakan pageant sebagai agen SSH Anda dan kemudian menyetel env
variabel GIT_SSH untuk dipasang. Kedua alat ini adalah bagian dari PuTTY dan juga
dibundel dengan TortoiseGit.

-
Anda menerima ini karena Anda berkomentar.
Balas email ini secara langsung, lihat di GitHub
https://github.com/microsoft/vscode/issues/13680?email_source=notifications&email_token=AFBZHXFVMRQ4DBPV2TLBBGTP5TJN7A5CNFSM4CSXV3P2YY3PNVWWK3TUL52HS4DFVVREXG43VMZTUL52HS4DFVVREXG43VMZTUL52HS4DFVVREXG43VMZTUL52HS4DFVVREXG43VMTUL52HS4DFVVREXG43VMTUL52HS4DFVREXG43
atau nonaktifkan utasnya
https://github.com/notifications/unsubscribe-auth/AFBZHXD63DGD5FUXRJYMLXDP5TJN7ANCNFSM4CSXV3PQ
.

@ Jazun713 mac berfungsi dengan baik: https://github.com/microsoft/vscode/issues/13680#issuecomment -473190878

Mengapa ini masih ada?

wow, jadi setelah 3 tahun masih tidak mungkin untuk menghubungkan kode VS melalui ssh, setidaknya memulainya dari baris perintah

Yah, saya tidak melupakan frasa sandi karena saya belum mengaturnya, tetapi entah bagaimana saya bisa membiarkan VSCode setidaknya diatur untuk menggunakan ssh setelah dibuka sebagai root (atau oleh Windows sebagai admin). Ini setelah saya menginstal Openssh atau di Windows telah mengatur koneksi dengan Putty. Setelah saya memeriksa konfigurasi ssh dan menginstal, seperti instruksi di sini https://help.github.com/en/articles/testing-your-ssh-connection . Silakan merujuk ke ini juga, ini memberikan banyak wawasan yang berguna karena setiap kasus bergantung pada bagaimana Anda telah mengatur agen ssh Anda dan OS (Saya menjalankan Ubuntu 18.04) https://help.github.com/en/articles/ kesalahan-izin-ditolak-publik

Menggunakan versi 1.36.1, masih tidak dapat terhubung ke Github melalui SSH dengan frasa sandi - harus menghilangkan frasa sandi dari kunci saya. Apa yang sulit? Dengan HTTPS Anda meminta pengguna dan kata sandi git ... (beberapa kali, itulah sebabnya saya tidak ingin menggunakannya).

Ini agak mengganggu. Menggunakan kata sandi dengan kunci SSH Anda mempromosikan keamanan yang baik. Secara teknis ini adalah bentuk 2FA (apa yang Anda miliki: kunci + apa yang Anda ketahui: kata sandi). Saya menggunakan editor ini di MacOS & benar-benar menjengkelkan untuk melompat ke konsol untuk semua operasi git. VS Git UI gagal. Ini harus memasukkan input kata sandi

Di macOS, saya menambahkan ini ke ~/.ssh/config di bagian paling akhir (yang penting, jangan letakkan apa pun di bawah):

Host *
   AddKeysToAgent yes
   UseKeychain yes 

Kemudian saya melakukan git pull sehingga macOS akan meminta kata sandi ssh saya. Setelah itu, macOS tidak pernah meminta saya lagi untuk kata sandi, oleh karena itu kontrol versi VSCode berfungsi sebagaimana mestinya.

Semoga bisa membantu seseorang.
Bersulang!

Di atas berhasil untuk saya. Mungkin catatan bisa masuk di sini: https://code.visualstudio.com/docs/setup/mac

Ini akan bagus untuk mendapatkan resolusi atau penyelesaian yang tepat di Windows.

"Solusi yang tepat" adalah menggunakan URL HTTPS, bukan SSH, bersama dengan pengelola kredensial git-scm. Bekerja sempurna untuk saya.

Dikirim dari Mail untuk Windows 10

Dari: Kai Richardson
Dikirim: Rabu, 28 Agustus 2019 09.33
Ke: microsoft / vscode
Cc: gdamore; Menyebut
Subjek: Re: [microsoft / vscode] Mendukung git dengan kata sandi kunci pribadi (# 13680)

Ini akan bagus untuk mendapatkan resolusi atau penyelesaian yang tepat di Windows.
-
Anda menerima ini karena Anda disebutkan.
Balas email ini secara langsung, lihat di GitHub, atau nonaktifkan utasnya.

@gdamore itu bukan solusi yang benar. Masalah ini secara khusus untuk menggunakan protokol SSH. Beberapa orang mungkin menggunakan server Git di mana admin secara khusus tidak mengizinkan operasi http (s) Git sehingga memberitahu mereka untuk menggunakan https tidak menawarkan solusi bagi mereka.

@ Kai-Richardson Ini berfungsi pada Windows jika Anda mengkonfigurasi Git untuk menggunakan perintah SSH yang mendukung agen SSH dan membuka kunci di agen tersebut.

  1. TortoiseGit: Setel variabel env GIT_SSH ke TortoiseGitPlink.exe dalam folder instalasi TortoiseGit Anda, konversikan kunci privat ke format PPK dengan menyertakan puttygen.exe dan kemudian buka kunci privat di pageant.exe . Anda bisa menggunakan PuTTY sebagai ganti TortoiseGit, dalam hal ini setel GIT_SSH ke plink.exe dan gunakan puttygen / kontes.
  2. Instal MS OpenSSH resmi ( tautan , saya menggunakan cokelat dengan Fitur Agen SSH diaktifkan), mulai layanan ssh-agent, buka kunci pribadi dengan ssh-add <path to key file> , dan setel variabel env GIT_SSH ke ssh.exe (biasanya C:\Program Files\OpenSSH-Win64\ssh.exe ). Satu-satunya masalah saya di sini adalah setelah rilis 8.0 tampaknya ada masalah dalam membaca kunci pribadi dengan tradisional (format -----BEGIN RSA PRIVATE KEY----- , lebih menyukai format -----BEGIN OPENSSH PRIVATE KEY----- ).

Memperbarui kode studio visual saya, tidak dapat lagi berinteraksi dengan github saya melalui aplikasi. Versi 1.37.1.1

OS: Windows 10 Pro: versi: 10.0.17134 Build 17134

Apakah tim MS membenci SSH?

IDE mana yang sebenarnya mendukung kode sandi SSH? Karena produk Jetbrains juga tidak demikian. Jadi Anda memiliki 2 dari 3 vendor teratas yang tidak mendukung kode sandi SSH secara asli (dan yang lainnya - Github - saya hanya tidak tahu apakah editor Atom mereka mendukung kode sandi SSH secara native).

Pada 29 Agustus 2019, pukul 20:43, Chris Migut [email protected] menulis:

Diperbarui oleh kode studio visual, tidak dapat lagi berinteraksi dengan github saya melalui aplikasi. Versi 1.37.1.1

Apakah tim MS membenci SSH?

-
Anda menerima ini karena Anda disebutkan.
Balas email ini secara langsung, melihatnya di GitHub https://github.com/microsoft/vscode/issues/13680?email_source=notifications&email_token=ACKS4GSGFBF2OGBCXPN55LDQHB3NLA5CNFSM4CSXV3P2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD5QI7ZA#issuecomment-526421988 , atau mematikan benang https://github.com/notifications/ unsubscribe-auth / ACKS4GTHNDBY5DETIRNVX6TQHB3NLANCNFSM4CSXV3PQ .

Apakah saya melakukan kesalahan? Saya baru saja mem-boot Kali Linux sebagai boot ganda pada Windows

  1. Semuanya berjalan dengan baik dan sempurna setelah proses yang lama tetapi entah bagaimana
    perangkat yang terhubung ke git sedang dipasang dan menandai bersama-sama dan saat saya mencobanya
    dapatkan jalannya. Booommmmm begitu banyak file ditarik ke hard drive saya ... Apa
    sedang terjadi ????

PangeranKK301088

Pada Sabtu, 31 Agustus 2019, 8:59 pagi flaw600, [email protected] menulis:

IDE mana yang sebenarnya mendukung kode sandi SSH? Karena produk Jetbrains
jangan juga. Jadi, Anda memiliki 2 dari 3 vendor teratas yang tidak mendukung SSH
kode sandi asli (dan yang lainnya - Github - saya tidak tahu apakah mereka
Editor atom mendukung kode sandi SSH secara asli).

Pada 29 Agustus 2019, pukul 20.43, Chris Migut [email protected]
menulis:

Diperbarui oleh kode studio visual, tidak dapat lagi berinteraksi dengan github saya
melalui aplikasi. Versi 1.37.1.1

Apakah tim MS membenci SSH?

-
Anda menerima ini karena Anda disebutkan.
Balas email ini secara langsung, lihat di GitHub <
https://github.com/microsoft/vscode/issues/13680?email_source=notifications&email_token=ACKS4GSGFBF2OGBCXPN55LDQHB3NLA5CNFSM4CSXV3P2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW2ZLOK
atau nonaktifkan utas <
https://github.com/notifications/unsubscribe-auth/ACKS4GTHNDBY5DETIRNVX6TQHB3NLANCNFSM4CSXV3PQ
.

-
Anda menerima ini karena Anda berlangganan utas ini.
Balas email ini secara langsung, lihat di GitHub
https://github.com/microsoft/vscode/issues/13680?email_source=notifications&email_token=AH4ENDPM4O6N2MT3BFLXGRTQHG66NA5CNFSM4CSXV3P2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD5TCASY#issuecomment-526786635 ,
atau nonaktifkan utasnya
https://github.com/notifications/unsubscribe-auth/AH4ENDORTBRU3GTGOWJFOVLQHG66NANCNFSM4CSXV3PQ
.

IDE mana yang sebenarnya mendukung kode sandi SSH? Karena produk Jetbrains juga tidak demikian. Jadi Anda memiliki 2 dari 3 vendor teratas yang tidak mendukung kode sandi SSH secara asli (dan yang lainnya - Github - saya hanya tidak tahu apakah editor Atom mereka mendukung kode sandi SSH secara native).

Ada utas duplikat https://puu.sh/B7qHY/57f3c89f47.png

Tautan dilindungi kunci

dikirim dari iPhone saya

Pada 16 Sep 2019, pukul 13.32, vitasam [email protected] menulis:

IDE mana yang sebenarnya mendukung kode sandi SSH? Karena produk Jetbrains juga tidak demikian. Jadi Anda memiliki 2 dari 3 vendor teratas yang tidak mendukung kode sandi SSH secara asli (dan yang lainnya - Github - saya hanya tidak tahu apakah editor Atom mereka mendukung kode sandi SSH secara native).

Pada 29 Agustus 2019, pukul 20:43, Chris Migut @. * > menulis: Diperbarui oleh kode studio visual, tidak dapat lagi berinteraksi dengan github saya melalui aplikasi. Versi 1.37.1 Apakah tim MS hanya membenci SSH? - Anda menerima ini karena Anda disebutkan. Balas email ini secara langsung, melihatnya di GitHub <# 13.680? Email_source = pemberitahuan & email_token = ACKS4GSGFBF2OGBCXPN55LDQHB3NLA5CNFSM4CSXV3P2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD5QI7ZA # issuecomment-526.421.988>, atau mematikan benang https://github.com/notifications/unsubscribe-auth/ACKS4GTHNDBY5DETIRNVX6TQHB3NLANCNFSM4CSXV3PQ.

Ada utas duplikat tentang masalah yang sama, seseorang mengatakan bahwa Atom memang mendukung kunci SSH secara native: https://puu.sh/B7qHY/57f3c89f47.png

-
Anda menerima ini karena Anda disebutkan.
Balas email ini secara langsung, lihat di GitHub, atau nonaktifkan utasnya.

Menarik, saya bisa buka linknya. Dialog dari Atom:
atom_ssh_key_pass

selain menambahkan entri konfigurasi ssh di atas

jika windows

Set-Service ssh-agent -StartupType Automatic 

di PowerShell
sekarang kode vs seharusnya tidak meminta ...

selain menambahkan entri konfigurasi ssh di atas

jika windows

Set-Service ssh-agent -StartupType Automatic 

di PowerShell
sekarang kode vs seharusnya tidak meminta ...

Saya mendapatkan beberapa kesalahan izin dengan upaya ini. Ada saran?

Set-Service: Layanan 'OpenSSH Authentication Agent (ssh-agent)' tidak dapat dikonfigurasi karena kesalahan berikut: Akses ditolak
Pada baris: 1 karakter: 1
+ Set-Layanan ssh-agent -StartupType Otomatis
+ ~ ~ ~ ~ ~ ~ ~ ~ ~~~~
+ CategoryInfo: PermissionDenied: (System.ServiceProcess.ServiceController: ServiceController) [Set-Service], ServiceCommandException
+ FullyQualifiedErrorId: CouldNotSetService, Microsoft.PowerShell.Commands.SetServiceCommand

Saya mendapatkan beberapa kesalahan izin dengan upaya ini. Ada saran?

@seantma : PowerShell harus dijalankan sebagai Administrator untuk memiliki Izin yang diperlukan.

selain menambahkan entri konfigurasi ssh di atas
jika windows
Set-Layanan ssh-agent -StartupType Otomatis

di PowerShell
sekarang kode vs seharusnya tidak meminta ...

Itu tidak membantu dalam kasus saya, VCode mengembalikan kesalahan berikut, ketika saya mencoba menyinkronkan komit lokal dengan asal (jarak jauh):

fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

Sepertinya VCode tidak menggunakan konfigurasi GIT global (nama dan email), bukan?

Apakah ini dan berhasil (tidak diuji dengan kunci ssh dengan frasa sandi):

  • Buka terminal baru di dalam Kode Visual, pilih folder proyek saat ini jika diminta
  • VS akan membuka terminal dengan Poweshell
  • Jalankan ssh-keygen.exe -> Enter, enter, enter ..... -> key yang dibuat di .ssh di folder pengguna (biasanya di C: \ Users \)
  • Salin konten kunci (.ssh / id_rsa.pub) dan tambahkan ke kunci baru pada pengaturan Github

Itu dia

Ini bukan solusi yang tepat, @ leductan-nguyen. Masalah ini tidak hanya khusus tentang kunci yang dilindungi kata sandi, tetapi juga tidak akan berfungsi jika Anda harus memiliki banyak kunci (saya punya satu untuk GitHub dan satu lagi untuk GitLab misalnya).

Ada kemajuan dengan yang satu ini?

@Badbreaddead , beberapa solusi atau solusi telah diposting di atas. Itu tergantung pada OS yang Anda gunakan:

OS X

Ikuti @ dschu-lab solusi dan menambahkan

Host *
   AddKeysToAgent yes
   UseKeychain yes 

ke _very end_ dari ~/.ssh/config . Jika kunci ssh Anda tidak memiliki nama standar, Anda mungkin juga perlu menentukannya dengan IdentityFile /path/to/your/ssh/private/key seperti yang ditunjukkan orang lain.
Anda kemudian akan diminta untuk menambahkan frasa sandi Anda saat pertama kali Anda menggunakannya dan kemudian akan disimpan di Keychain untuk penggunaan selanjutnya.

Linux

Instal gantungan kunci , misalnya melalui sudo apt install keychain , seperti yang ditunjukkan @ Silentz0r di atas . Dia kemudian mengeksekusi keychain --eval <ssh-key-name> , tetapi tampaknya keychain <path-to-ssh-key> memiliki efek yang sama. Menambahkan ke .bashrc atau yang setara seharusnya sudah cukup.

Windows

@geordanr 's solusi adalah satu-satunya yang bekerja untuk saya. Jalankan perintah berikut di Git Bash untuk menambahkan kunci ssh ke agen dan menjalankan kode di sesi yang sama:

$ eval `ssh-agent`
$ ssh-add /path/to/key
$ code

Jika Anda ingin menghindari keharusan mengetik dua perintah pertama setiap saat, Anda juga dapat menambahkan sesuatu seperti

#use fix path for SSH_AUTH_SOCK so it works more then one instance of gitbash
export SSH_AUTH_SOCK="$TEMP/ssh_agent_socket"

ps | grep ssh-agent > /dev/null
RUNNING=$?;

if [ "$RUNNING" -eq "1" ] 
then
# ssh-agent is not yet running
    eval `ssh-agent -a $SSH_AUTH_SOCK`
fi
ssh-add 

ke file ~/.bashrc di Git Bash untuk memulai ssh-agent secara otomatis (diambil dari sini dan sedikit disesuaikan). Jika kunci Anda tidak memiliki nama standar, Anda harus menentukan path ke sana setelah ssh-add , misalnya ssh-add ~/.ssh/id_rsa_personal_key .

IDE mana yang sebenarnya mendukung kode sandi SSH? Karena produk Jetbrains juga tidak demikian. Jadi Anda memiliki 2 dari 3 vendor teratas yang tidak mendukung kode sandi SSH secara asli (dan yang lainnya - Github - saya hanya tidak tahu apakah editor Atom mereka mendukung kode sandi SSH secara native).

Pada 29 Agustus 2019, pukul 20:43, Chris Migut @ . * > menulis: Diperbarui oleh kode studio visual, tidak dapat lagi berinteraksi dengan github saya melalui aplikasi. Versi 1.37.1 Apakah tim MS hanya membenci SSH? - Anda menerima ini karena Anda disebutkan. Balas email ini secara langsung, melihatnya di GitHub <# 13.680? Email_source = pemberitahuan & email_token = ACKS4GSGFBF2OGBCXPN55LDQHB3NLA5CNFSM4CSXV3P2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD5QI7ZA # issuecomment-526.421.988>, atau mematikan benang https://github.com/notifications/unsubscribe-auth/ACKS4GTHNDBY5DETIRNVX6TQHB3NLANCNFSM4CSXV3PQ .

PyCharm mendukung kunci ssh saya dengan frasa sandi tanpa masalah, PyCharm meminta kata sandi saya sekali dan tidak pernah lagi dan semua fungsi git berfungsi seperti yang diharapkan.

Jalankan perintah berikut di Git Bash untuk menambahkan kunci ssh ke agen dan menjalankan kode di sesi yang sama:

$ eval ssh-agent
$ ssh-add / path / to / key
$ code

Untuk apa nilainya, ini juga berfungsi di Linux - dan tidak perlu meluncurkan code melalui terminal. Pintasan juga akan berfungsi dengan baik. Terminal itu sendiri dapat ditutup setelah perintah ini.

Saya tahu setidaknya solusi lain:

Instal ssh-askpass (di Arch Linux ini disediakan oleh x11-ssh-askpass dan juga paket kuda laut , dan binari masing-masing berada di /usr/lib/ssh/ssh-askpass dan /usr/lib/seahorse/ssh-askpass ). Menginstal salah satu paket ini adalah semua yang diperlukan. VS Code akan meluncurkan dialog kata sandi setiap kali diperlukan.

Cukup tambahkan kunci tersebut di bawah ke lingkungan Anda:

DISPLAY=needs-to-be-defined
SSH_ASKPASS=/mingw64/libexec/git-core/git-gui--askpass

Saya berani bersumpah ini adalah tonggak sejarah Januari 2020 . 😕

Menambahkan ke https://github.com/microsoft/vscode/issues/13680#issuecomment -559013132 ini

Apakah karena bash meminta Anda pada setiap login untuk memasukkan kata sandi Anda, Anda dapat menjalankan VSCode secara berantai di jalan pintas melalui bash. Untuk ikon, cukup gunakan yang disertakan dengan VSCode, kemungkinan besar di bawah% LOCALAPPDATA% \ Programs \ Microsoft VS CodeCode.exe

Jika Anda sudah menjalankan ssh-agent, ini akan segera meluncurkan kode. Jika tidak, program akan menunggu Anda memasukkan frasa sandi Anda.

image

Saya ingin membantu dengan ini. Itu adalah salah satu dari sedikit hal yang saya masih ingin agar VSCode lakukan, tetapi bahkan tanpa itu, tidak masalah, saya masih sangat menikmati menggunakan VSCode, jadi terima kasih!

Tahukah Anda bahwa Git-untuk-Windows dilengkapi dengan skrip bernama start-ssh-agent , ada di folder cmd , yang biasanya ditambahkan ke jalur pengguna pada pemasangan standar Git-untuk-Windows. Mungkin ada cara bagaimana menggunakan ini untuk menyelesaikan masalah ini?

Saya bertanya-tanya apakah seseorang dapat mengarahkan saya ke rangkaian peristiwa yang terjadi saat Anda mengklik tombol tekan / tarik, mungkin kami dapat mencoba menjalankan skrip ini, mungkin di terminal vscode, atau dalam popup.

Selain itu, sebagai nilai tambah, jika pengguna telah memulai ssh-agent, skrip biasanya akan menemukannya, dan hanya menggunakan agen yang ada, jadi frasa sandi bahkan tidak diperlukan.

Terima kasih!

https://github.com/microsoft/vscode/issues/13680#issuecomment -525861890 juga berfungsi untuk saya, tetapi tidak terlalu mudah, dan memperumit masalah jika Anda juga menggunakan Git untuk Windows git dan bash.

Apa yang saya temukan tentang masalah dan ringkasan solusi yang mungkin

Masalah utama di Windows + Git untuk Windows (GfW) + VSCode + SSH git repo adalah ini:

  • Jika Anda tidak meluncurkan Windows atau GfW ssh-agent sebelumnya (atau tidak memiliki helper / layanan yang melakukannya), tampaknya tidak dapat meluncurkan ssh-agent dan ssh-add. Mungkin ini bukan tanggung jawab VSCode, tetapi senang mengetahui atau diberi tahu bahwa ssh tidak berjalan.
  • Jika Anda meluncurkan GfW ssh-agent melalui .bashrc, dan jika Anda meluncurkan VSCode dari Start Menu / Pintasan dan bukan sesi yang sama (seperti menjalankan code dari cli), maka VSCode tidak akan akses ke GfW ssh-agent juga.
  • Jika Anda meluncurkan ssh-agent versi Windows, dan menginstal GfW, GfW git tidak menggunakan ssh-agent versi Windows secara default, karena versi ini juga dilengkapi dengan alat ssh versinya sendiri. VSCode tampaknya menggunakan GfW git jika tersedia, jadi mungkin itu sebabnya VSCode tidak mendeteksi bahwa Windows ssh-agent sudah berjalan (dengan kunci tambahan) dan menggunakannya.

Solusi 2 bagus, tetapi juga tidak super langsung, ini adalah langkah-langkah yang saya ambil:

  1. Instal OpenSSH Client di bawah Fitur Opsional
  2. Tambahkan GIT_SSH di Variabel Lingkungan, arahkan ke alat Klien OpenSSH, kemungkinan C: \ Windows \ System32 \ OpenSSHssh.exe
  3. Alihkan agen Open SSH di bawah Layanan ke Otomatis (jika Dinonaktifkan, milik saya dulu)
  4. Jalankan ssh-add di PowerShell dan Anda akan melihat kunci Anda ditambahkan
  5. VSCode sekarang seharusnya dapat melakukan hal-hal git dengan repo SSH
  6. Namun, GfW git dan bash tidak menggunakan agen ini (saya mencoba mengarahkan bash env GIT_SSH ke alat Windows OpenSSH tetapi mereka menolak untuk bekerja sama), jadi Anda harus menggunakan skrip .bashrc untuk memulai agen dan memasukkan frasa sandi lain waktu saat memulai pesta GfW.

Untuk saat ini, saya tetap menggunakan Solusi 1, karena saya juga menggunakan sistem Mac dan Linux dan senang memiliki alat bash / git / ssh yang sama di mana-mana.

Saya mencoba merangkai skrip Git-untuk-Windows yang disebut start-ssh-agent.cmd di folder cmd, dengan Code.exe di pintasan sebagai %COMSPEC% /C %LOCALAPPDATA%\Programs\Git\cmd\start-ssh-agent.cmd && "%LOCALAPPDATA%\Programs\Microsoft VS Code\Code.exe" dan berhasil, tetapi memiliki sisi yang aneh ini efek membuka contoh kedua dari VSCode setelah keluar dari contoh pertama, tapi saya tidak tahu mengapa.

Jika saya menjalankan baris ini dari terminal Windows (dengan atau tanpa sebelumnya %COMSPEC% /C ) itu berfungsi dengan baik.

Hal lain yang saya coba adalah membuat file *.bat atau *.cmd dengan perintah yang sama seperti pintasan, tetapi saya terkejut karena itu tidak berhasil. VSCode dimulai, tetapi tidak dapat menarik / mendorong, dan merespons dengan "izin ditolak (publik)" yang ditakuti. kesalahan.

Saya juga menghabiskan waktu mencari-cari melalui basis kode ekstensi Git tetapi saya tidak tahu di mana harus memasukkan skrip ssh-start-agent, idealnya ketika mencari versi Git dan menemukannya di Windows, seperti di sekitar baris 61-148 di git.ts karena menjalankan git --version ia juga bisa menjalankan cp.exec('start-ssh-agent.cmd') tetapi harus memiliki cara untuk mendapatkan frasa sandi dari pengguna.

Akhirnya, yang saya selesaikan adalah menyalin start-ssh-agent.cmd ke dalam file baru bernama vscode-ssh-agent.cmd dan mengganti baris terakhir yang disebut CMD dengan <strong i="25">@call</strong> "%LOCALAPPDATA%\Programs\Microsoft VS Code\Code.exe" . Tapi saya tidak bisa menyematkannya ke bilah tugas.

Saya sedang mencoba menerapkan fitur ini. Ini masih dalam proses, tapi saya harus memiliki PR segera tersedia.

Untuk saat ini saya memulai ssh-agent, menambahkan kunci pengguna jika git.sshPrivateKeyPath disetel, meminta pengguna untuk memasukkan kata sandi kunci SSH jika diminta, dan menggunakan variabel lingkungan agen untuk setiap panggilan git.
Tes pertama saya pada mesin Windows tampaknya berhasil.

Saya membaca semua komentar di sini tetapi mungkin lupa sesuatu, jadi silakan memberikan komentar apa pun.

Menambahkan ke https://github.com/microsoft/vscode/issues/13680#issuecomment -583599355 dari @weiliddat; Saya sendiri sering menggunakan menu konteks "Buka dengan VSCode" (klik kanan pada folder) dan saya menggunakan ContextEdit untuk mengedit entri menu konteks saat membuka folder dengan VSCode untuk meluncurkannya melalui Git Bash, jadi VSCode memiliki akses ke konteks SSH.

  1. Pasang ContextEdit .
  2. Jalankan ContextEdit sebagai administrator
  3. Temukan "File Folder" dalam daftar panjang ekstensi.
    image
  4. Klik dua kali pada entri "Open w & th Code" di bawah "perintah Shell"
  5. Ubah string "Command line" menjadi "C:\Program Files\Git\bin\bash.exe" -l -c "code '%V';exit" . Pastikan "C:\Program Files\Git\" sesuai dengan direktori instalasi Git untuk Windows Anda. Anda mungkin ingin menyalin perintah lama jika Anda perlu mengatur ulang.
  6. Klik "OK" dan "Keluar"

Sekarang, jika Anda mengklik kanan pada folder untuk "Buka dengan VSCode", ini pertama-tama harus meluncurkan Git Bash, dan kemudian membuka VSCode di folder kanan. Jika Anda telah mengatur Git Bash dengan benar untuk meluncurkan Agen SSH Anda sebelum memulai Git Bash , ini akan meminta Anda untuk mengetikkan frasa sandi sekali setiap kali Anda memulai ulang komputer. Pada pembukaan berikutnya, ini harus langsung membuka VSCode dan kunci SSH Anda sudah siap.

Saya tidak dapat menemukan entri ContextEdit ketika mengklik kanan di dalam folder di Explorer, daripada langsung mengklik kanan folder itu sendiri.

Solusi ini bekerja dengan sangat baik.

Cukup tambahkan kunci tersebut di bawah ke lingkungan Anda:

DISPLAY=needs-to-be-defined
SSH_ASKPASS=/mingw64/libexec/git-core/git-gui--askpass

Cukup tambahkan kunci tersebut di bawah ke lingkungan Anda:

DISPLAY=needs-to-be-defined
SSH_ASKPASS=/mingw64/libexec/git-core/git-gui--askpass

https://github.com/microsoft/vscode/issues/13680#issuecomment -575204695
Ini menyelesaikannya! Terima kasih banyak!

Tolong, periksa bagian ini. Singkatnya, dikatakan bahwa Anda perlu memulai VSCode dari GitBash atau semacamnya untuk memiliki variabel lingkungan yang diperlukan. Juga, jika Anda memeriksa variabel-variabel ini di GitBash Anda mungkin mendapatkan sesuatu seperti ini:
.

Misalnya, jika Anda tidak ingin menggunakan GitBash untuk memulai VSCode setiap kali ( karena ini omong kosong! IMHO ), Anda dapat menambahkan ini menggunakan jendela Environment Variables atau menggunakan perintah rundll32.exe sysdm.cpl,EditEnvironmentVariables (yaitu melalui cmd.exe).

Hasilnya akan terlihat seperti itu:

Sekarang, cukup restart (bukan memuat ulang) VSCode dan itu akan berfungsi:

Lucunya, ia bekerja meskipun DISPLAY=WTHeck , jadi, ia mungkin hanya mencari keberadaan variabel ini.

Mengapa tidak cukup mendefinisikan ini ( private key file path atau SSH_ASKPASS ) sebagai nilai konfigurasi JSON suatu tempat sebagai solusi, sehingga VSCode akan menambahkan ini saat startup ke variabel lingkungan internalnya?

Saya tidak begitu akrab dengan cara kerja aplikasi elektron atau windows tetapi apakah mungkin untuk mengembangkan pembungkus di sekitar solusi ini sehingga ketika VSCode menginstal itu akan secara otomatis mengkonfigurasi pengaturan ini.

TBH bagi saya ini tidak tampak seperti ini akan menjadi masalah yang sulit untuk dipecahkan tetapi mengingat bagaimana diskusi ini berlanjut selama 4 tahun, itu mungkin masalah besar. Akan sangat keren melihat VSCode mengimplementasikan setidaknya sesuatu sehingga pengguna dapat menggunakan fitur git yang cukup standar ini tanpa harus melakukan penyelesaian sendiri. Meskipun saya melihat poin yang harus dibuat dalam menerapkannya dengan benar pertama kali.

Terima kasih soufiene-slimi atas solusi solusi Anda dan terima kasih F8ER atas klarifikasinya. Meskipun ada ketidakkonsistenan UI, setidaknya itu berfungsi

Cukup tambahkan kunci tersebut di bawah ke lingkungan Anda:

DISPLAY=needs-to-be-defined
SSH_ASKPASS=/mingw64/libexec/git-core/git-gui--askpass

Ada yang baru di sini? Saya baru saja mulai bekerja dengan VSCode di WSL 2 dan Git. Dan karena VSCode macet setiap kali saya mencoba mendorong atau mempublikasikan sesuatu, saya mencobanya di terminal dan berfungsi dengan baik karena di sana saya memiliki kemungkinan untuk memasukkan frasa sandi saya.

Masalah ini sudah sangat lama dan memiliki banyak komentar. Mungkin di suatu tempat adalah solusi yang bagus tanpa menghapus kata sandi dari kunci saya, dan tanpa menyimpan kunci di suatu tempat dalam konfigurasi.

Hai teman-teman,

Saya mengalami masalah ini di Mac saya juga.
Saya memiliki kunci RSA yang disiapkan dan konfigurasi saya terlihat seperti ini

# GitLab.com
Host gitlab.com
  Preferredauthentications publickey
  UseKeychain yes
  AddKeysToAgent yes
  IdentityFile ~/.ssh/id_rsa

Masalahnya adalah dari terminal kode VS ketika saya mendorong ke asal dengan CLI itu berhasil mendorong kode saya dengan prompt untuk memasukkan kata sandi.
Masalah muncul ketika saya menggunakan tarik / dorong / sinkronisasi GUI VScode yang diberikannya

Please make sure you have the correct access rights
and the repository exists.
> git push -u origin v1.5_Testing
[email protected]: Permission denied (publickey).
fatal: Could not read from remote repository.

satu-satunya perbedaan adalah GUI tidak meminta kata sandi, itulah sebabnya saya menganggapnya gagal.

[email protected] : Izin ditolak (publickey).
...
satu-satunya perbedaan adalah GUI tidak meminta kata sandi, itulah sebabnya saya menganggapnya gagal.

@mohammedpatla Tolong, periksa ini .

Solusi dengan variabel lingkungan tidak membantu saya. Saya tidak menginstal git di Windows tetapi di Ubuntu 20.04 yang berjalan di WSL2. Tidak ada direktori bernama mingw64 atau biner bernama git-gui--askpass mana pun.

Oleh karena itu saya juga berpikir bahwa solusinya juga tidak berfungsi pada Mac, @ F8ER .

Saya tidak dapat menjalankan VScode melalui git-bash di Mac @ F8ER

Solusi dengan variabel lingkungan tidak membantu saya. Saya tidak menginstal git di Windows tetapi di Ubuntu 20.04 yang berjalan di WSL2. Tidak ada direktori bernama mingw64 atau biner bernama git-gui--askpass mana pun.

Saya tidak dapat menjalankan VScode melalui git-bash di Mac

Tahukah Anda apa itu Environment Variable ?
@NicolasGoeddel Anda mungkin ingin memeriksa tautan ini
@mohammedpatla Anda mungkin ingin memeriksa tautan ini

Juga. tolong, coba Google dulu . Misalnya, tidak adanya git-gui--askpass mungkin berarti tidak ada paket git-gui diinstal, oleh karena itu, Anda mungkin perlu menginstalnya.

Solusi dengan variabel lingkungan tidak membantu saya. Saya tidak menginstal git di Windows tetapi di Ubuntu 20.04 yang berjalan di WSL2. Tidak ada direktori bernama mingw64 atau biner bernama git-gui--askpass mana pun.

Saya tidak dapat menjalankan VScode melalui git-bash di Mac

Tahukah Anda apa itu Environment Variable ?
@NicolasGoeddel Anda mungkin ingin memeriksa tautan ini
@mohammedpatla Anda mungkin ingin memeriksa tautan ini

Juga. tolong, coba Google dulu . Misalnya, tidak adanya git-gui--askpas mungkin berarti tidak ada paket git-gui terpasang.

Tentu saja saya tahu apa itu variabel lingkungan. Tetapi mengapa saya harus menginstal aplikasi GUI pada mesin Linux yang berjalan pada WSL2 ketika GUI tersebut tidak dapat dijalankan? Ini tidak mungkin dilakukan pada mesin tanpa kepala. Silakan baca posting saya lebih hati-hati lain kali.

Trik git-gui itu bukan solusi yang tepat dalam skenario saya. Tetapi mungkin ini berfungsi di Mac jika VSCode dan repositori berjalan secara native di lingkungan yang sama. Kemudian @mohammedpatla hanya perlu menginstal git-gui di sistemnya dan perlu mengubah variabel lingkungan.

Tentu saja saya tahu apa itu variabel lingkungan. Tetapi mengapa saya harus menginstal aplikasi GUI pada mesin Linux yang berjalan pada WSL2 ketika GUI tersebut tidak dapat dijalankan? Ini tidak mungkin dilakukan pada mesin tanpa kepala.
Trik git-gui itu bukan solusi yang tepat dalam skenario saya.

Mengapa Anda mencoba menjalankan VSCode pada mesin non-gui atau saya melewatkan sesuatu?
Juga, Anda mungkin ingin melihat yang ini .

Berfungsi dengan baik untuk saya di Mac saya, tidak peduli bagaimana saya memulai vscode, tetapi saya mengaktifkan ssh-agent dan terhubung ke rantai kunci kredensial saya sehingga dimulai secara otomatis.

Saya belum mencoba menarik / mendorong dari WSL, tetapi saya menggunakan koneksi jarak jauh vaksin. Saya dapat menjalankan aplikasi pria dari WSL menggunakan VcXsrv tetapi itu tidak relevan.

Apakah ssh-agent dimulai di WSL Anda? Mulai terminal WSL Anda dan lihat .bashrc atau .bash_prifile , jika ada di folder utama Anda. Kemudian tambahkan:

eval `ssh-agent`
ssh-add

Mungkin itu akan membantu tapi mungkin juga tidak. Saat menggunakan wsl saya telah menemukan beberapa hal tidak berfungsi. Biarkan terminal Anda tetap terbuka dan sinkronkan repo yang Anda dapatkan secara manual

Saya pikir ini terlalu jauh, bukan? Kami sudah mendapatkan solusi. Solusi yang tepat adalah VS Code untuk meminta kata sandi secara asli, dengan cara yang sama seperti yang dilakukan untuk nama pengguna / sandi normal.

/ cc @ alarr46 , bagaimana menurutmu?

Tentu saja saya tahu apa itu variabel lingkungan. Tetapi mengapa saya harus menginstal aplikasi GUI pada mesin Linux yang berjalan pada WSL2 ketika GUI tersebut tidak dapat dijalankan? Ini tidak mungkin dilakukan pada mesin tanpa kepala.
Trik git-gui itu bukan solusi yang tepat dalam skenario saya.

Mengapa Anda mencoba menjalankan VSCode pada mesin non-gui atau saya melewatkan sesuatu?
Juga, Anda mungkin ingin melihat yang ini .
Anda salah paham. VSCode berjalan di Windows dan aplikasi serta sumbernya yang saya kembangkan berjalan di WSL 2.
Tapi terima kasih untuk tautan Anda. Saya tidak tahu tentang berbagi kredensial Git antara Windows dan WSL. Saya akan mengujinya.

Di sisi lain, @ranolfi benar. Semua ini masih solusi. Akan lebih baik jadi perbaiki seluruh masalah itu. :-)

Ya, saya ingin ini diterapkan ke VSCode, secara native juga. Sebuah prompt akan sangat dihargai.

Cukup tambahkan kunci tersebut di bawah ke lingkungan Anda:

DISPLAY=needs-to-be-defined
SSH_ASKPASS=/mingw64/libexec/git-core/git-gui--askpass

sebelum Anda bertanya pada diri sendiri apakah harus ada spasi sebelum tanda hubung ganda, seharusnya tidak ada. Sepertinya itu harus menjadi parameter tetapi saya yakin itu sebenarnya nama file ... tidak ada spasi

Cukup tambahkan kunci tersebut di bawah ke lingkungan Anda:

DISPLAY=needs-to-be-defined
SSH_ASKPASS=/mingw64/libexec/git-core/git-gui--askpass

sebelum Anda bertanya pada diri sendiri apakah harus ada spasi sebelum tanda hubung ganda, seharusnya tidak ada. Sepertinya itu harus menjadi parameter tetapi saya yakin itu sebenarnya nama file ... tidak ada spasi

Saya pikir ini terlalu jauh, bukan? Kami sudah mendapatkan solusi. Solusi yang tepat adalah VS Code untuk meminta kata sandi secara asli, dengan cara yang sama seperti yang dilakukan untuk nama pengguna / sandi normal.

/ cc @ alarr46 , bagaimana menurutmu?

Tunggu saja rilis resminya, gunakan Git-CLI sampai saat itu.

Saya pikir ini terlalu jauh, bukan? Kami sudah mendapatkan solusi. Solusi yang tepat adalah VS Code untuk meminta kata sandi secara asli, dengan cara yang sama seperti yang dilakukan untuk nama pengguna / sandi normal.

/ cc @ alarr46 , bagaimana menurutmu?

Saya setuju, itulah yang saya terapkan dalam pull request ini . Itu masih perlu ditinjau.

Saya setuju, itulah yang saya terapkan dalam pull request ini . Itu masih perlu ditinjau.

Awal yang sangat bagus. Terima kasih banyak! Roket.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat