再現する手順:
結果:
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.
コマンドラインから機能しますか? 秘密鍵ファイルを使用するようにgitをどの程度正確に設定しますか?
コマンドラインから機能します。 実際、私はtortoise gitを介してgitをセットアップしているので、すべてが適切に行われていると思います。
コマンドラインをどのように起動しますか? どのコマンドライン?
私はWindowsでgitbash(MINGW64)を使用しています。
正しい。 したがって、Tortoiseのように、 git.sshkey
設定も追加する必要があるかもしれません。
Windows 10では、Git2.10.1。
本番サーバーでvscodeでgitを使用する際に問題が発生したため、テストサーバーを作成しました。
最初は、パスワードで保護されたユーザー(キーなし)で同じエラーが発生します。資格情報のプロンプトなどは表示されません。
vscode内のターミナル、またはプッシュ、プルできる任意のランダムcmdを使用すると、機能します-パスワードを要求します。 vscodeでは、コミットのみを準備できます。 プル、プッシュ、同期はすべて、パスワードを要求していないため失敗します。
本番環境では、ssh用に異なる5桁のポートを持つパスフレーズで保護されたキーを使用しています。
また、1台のマシンにいくつかの異なるsshキー(gitを含む)があります...
@joaomorenoなぜバックログに移動したのですか?
優先順位を計画するだけです。 ただし、プルリクエストを試みることはできます。 👍
それを待っています😉
これに関する更新はありますか? 私は同じ問題を抱えています、そしてそれはかなり迷惑です😞
@joaomoreno私はこれを刺している。 最近キーベースのセキュリティに移行したので、個人的に影響を受けます。
人々はここで私の進捗状況を追跡でき
@hashharすごい! 🍻壁にぶつかったら教えてください。
@joaomoreno変更が必要な場所を調べていたところ、次のことがわかりました。
clone
を除くすべての操作を実行できます(node.url.parse()はssh urlに対して機能しないため)。git.sshkey
を追加します(秘密キーの場所(現時点ではopensshキーに限定されています-gitはそれらをネイティブにサポートしているため、後でパテキーを調べます))。gitエンドポイントとの通信はvscodeではなくgit.exeによって処理されるため、(現在見たものから)他の変更は必要ありません。
さて、URLの解析については悪いです。 ノードはgit+ssh://[email protected]:hashhar/vscode
やssh://[email protected]:hashhar/vscode
などのURLを受け入れるようですが、 ssh
部分を明示的に指定する必要があります。
これについてどうすればよいですか。vscodeは[email protected]:username/repo
形式に一致するURLの前にssh
魔法のように付加する必要があります。 または黙って失敗しますか? (これでもssh-agentを実行する必要があります)。
@joaomorenoにpingします。 あなたが時間を見つけることができるならば、私が持っている上記の問題についてコメントしてください。 私は現在、秘密鍵に対してssh-agentを起動することにより、概念実証をハッキングしています。 それは機能しますが、まだいくらかの磨きが必要です。
@hashhar遅れてすみません...私は現在かなり忙しいです。 気軽にPRを作成して、そこに議論を移してください。3月にそれを取り入れようとします。
ssh-agentを起動するだけでは不十分です。環境変数SSH_AGENT_PIDとSSH_AUTH_SOCKも追加して、Gitがどこを見ればよいかを認識できるようにする必要があります。
次に、これをどこかに保存して、VSCodeの再起動の間に使用できるようにするか、VSCodeを再起動するたびにssh-agentを再起動する必要があります。
これをPosh-Git(Powershell Gitモジュール)と共有できれば素晴らしいと思います。Posh-Gitは値を([System.IO.Path]::GetTempPath()) ".ssh\$key.env"
格納しますが、その場所が自分たちのものであることを確認するためにそのチームと話す価値があるかもしれませんロックされて幸せです。
@andrewducker追加の入力をありがとうございます。 半ば半ばなので、思い通りのペースで取り組んでいません。 私は週末までにそれに戻ります。 Posh-Gitチームに知らせます。
@joaomoreno私はこれに
Git呼び出しが行われるたびに呼び出されるコードはありますか? その場合は、最初に呼び出されたときにパスワードを要求できます。
それを見ると、Git.tsにフックを入れることが、サーバーへの接続を意味するすべての関数の内部に移動する方法になります。 (フェッチ、プル、プッシュなどのように)。
(私はこれを自分で行うことを申し出ますが、TypeScriptで何も書いたり、VSCode拡張機能を使用したりしたことがないので、これはGitHubのコードを簡単に掘り下げただけです。)
最大の問題は、Windowsでは、SSH_AUTH_SOCK変数とSSH_AUTH_PID変数が、ssh-agentの開始方法に応じて、すべてのプロセスまたは単一のコンソールセッションで使用できる場合があることです。 したがって、既存のssh-agentを再利用する代わりに(少なくともWindowsでは)、VSCode内からssh-agentを起動する方がはるかに簡単です。
実際には、これは、最初のGit操作が完了する前に、ユーザーがパスフレーズを1回入力する必要があることを意味します。 SSH_AUTH_SOCKが作成されるハードコードされた場所を定義して、他のVSCodeインスタンスが独自のエージェントを開始する前にそれらを確認できるようにすると、VSCodeインスタンスはssh-agentを共有できます。
これは私にとって非常に興味深い挑戦であることが判明しています。 😃
vscodeが既存のSSH_AUTH_SOCKを尊重する場合も、実行可能なオプションになります。 システムでssh-agentがすでに実行されているのに、秘密鍵のパスワードの入力を求められます。 興味深いことに、統合されたvscodeターミナル(シェル)内でgitを問題なく使用できます。 デバッグを容易にするために、gitプラグインとターミナルは同じように動作する必要があります。
編集:私はコミット中ですf9d0c687ff2ea7aabd85fb9a43129117c0ecf519
EDIT2:ウィンドウマネージャーのランチャーを使用する代わりに、bashからvscodeを実行すると機能します。
はい-すでに環境に設定されているセッションからVSCodeを開始すると、完全に機能します(私の場合はPowershellから起動します)。 したがって、それらがすでに設定されている場合は、何もする必要はありません。
これについて何か進展はありますか?
@ezamelczykいいえ。 申し訳ありません。 大学のせいで十分な時間が取れませんでした。 ところで私に思い出させてくれてありがとう。 私は来週、いくつかの仕事を成し遂げようとします。
皆さんこんにちは、
悲しいことに、私は同じ種類の問題を抱えています...😭
これが私の設定とそれを再現するための詳細なシナリオです。
少しお役に立てば幸いです。
OS :macOSXSierraバージョン10.24.4
VScode :バージョン1.11.1
私の.sshフォルダーには、次のファイルがあります。
設定ファイルの内容:
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
コマンドラインとタワーから問題なくコミットしてプッシュできます。
しかし、VScodeを使用することはできません...試行するたびに次の出力メッセージが返されます。
git pull
許可が拒否されました(公開鍵)。
致命的:リモートリポジトリから読み取ることができませんでした。
正しいアクセス権があることを確認してください
リポジトリが存在します。
ご協力いただきありがとうございます
私にとって、これは本当にブロッカーです。 私はVSCが好きですが、gitを使用する機能がないと、日常のエディターとして使用できません。
@MartinZubek @jmbelloteau SSH Agentを起動したコマンドラインから起動すると修正されますか?
@andrewducker
ターミナルから、次のコマンドを使用してリモートGitに接続しました。
ssh -T [email protected]
...次に、次のコマンドを使用してターミナルからVScodeを開きます。
code
VScodeからプッシュしても、同じエラーが発生します...
それは本当に問題です!
@MartinZubekも同じですが、VScodeはAtomよりもはるかに優れています。
統合端末のUXの速度とgitを使用できる可能性が大好きです。
ただし、安全を確保するには、リモートGITへの接続も必要です。 つまり、SSHをパスワードで保護します...
それは感覚になります...そうですか?
@andrewducker確かにそれは私にとってこのように機能します。 :)
コマンドラインから起動しなくてもネイティブに動作する可能性はありますか?
こんにちは@MartinZubek 、
あなたにとって何が効果的ですか? もっと具体的にできますか? 😄
@jmbelloteau確かに、「アクセスが拒否されました(公開鍵)」エラーで終了することはなくなり、git pull / pushは想定どおりに機能します。 〜/ .ssh / configファイルの正しいキーを使用し、キーのパスフレーズが必要になると、次のウィンドウがポップアップ表示されます。
http://imgur.com/wpExMMP
@MartinZubekなので、VScodeからプッシュできますか?! それは素晴らしいことです...
SSH Agentを起動したコマンドラインから起動しましたか?
はいの場合、どのように?
なぜそれが私の環境で機能しないのか理解できません
@jmbelloteauはい、使用するコマンドラインからvscodeを起動しました(正確には、デフォルトでgit for Windowsに付属しているのはgit-bash.exeです)。 ただし、ssh-agentなどを手動で起動する必要はありませんでした。 git-bashか何かで自動的に始まると思います。
@MartinZubekくそー...
あなたが言ったように、それは私にはうまくいきません😭
@vscodeteamこの問題を処理する計画はありますか?
@jmbelloteauそれはとても難しいです。 それはまたかなりのヒットとミスです。 私が実装しようとしたのは、ノードプロセスでssh-agentを起動して、環境変数をVSCodeで使用できるようにすることでしたが、複数のVSCodeインスタンスには複数のssh-agentが必要であり、パスフレーズを毎回入力する必要があります。
代わりにSSH_AUTH_SOCK変数を使用する方法を探しています。 Linuxで動作しますが、Windowsではまだテストしていません。
OpenSSH vs Windows Powershell SSH vsPuTTYの追加の問題があります。
誰かがそれをテストする気があるなら、私はコードを私のフォークにプッシュすることができ、人々はそれをテストすることができます。 ただし、ハーコード化されたパス(概念実証)を使用したため、しばらく時間がかかります。
私は土曜日か日曜日までにそれを持っていると思います。
こんにちは@hashhar !
ご回答有難うございます。
確かにそれは本当に複雑に思えます。 😞
私は本当に開発者ではないので、あなたを本当に助けることはできません。あなたが魔法を見つけて幸運を送った場合に備えて、私はただ歩き回ります!
@hashharあなたのコメントに関して、私は提案する2つのオプションがあります:
ssh-agent path/to/code
によって実行されるssh-agent
下で、VSCode全体(祖先ノードプロセスを含む)を再起動することができます。 このように、ノードプロセスごとにssh-agentのインスタンスを1つ実行する必要はありません。私は間違いなくテストすることができます。 それを構築するために何か特別なものが必要ですか? 公式版をインストールしました。
私はそれを構築することができます:)
@joaomoreno部分的な修正の準備ができていると思います。
ファイルextensions/git/src/askpass.ts
、 getEnv()
を次のように変更しました。
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
は、設定されている場合、ユーザーの環境から選択されます。
次のことが可能になりました。
| ssh-agent | エージェントにロードされたsshキー| 結果|
|:---:|:---:|:---:|
| ✔| ✔| ✔|
| ✔| ✘| $ SSH_ASKPASSが実行されます|
| ✘| ✘| 何も起こらない|
したがって、2行目の問題を修正するには、 askpass.ts
からSSH_ASKPASS
を設定することもできます。これにより、VSCodeは起動時にプログラムを起動し、SSHキーのパスフレーズを要求します。
ただし、最後の行では、VSCode内からssh-agentを起動し、適切な変数を設定する必要があります。
誰かがこれをテストしたい場合は、私のフォーク(https://github.com/hashhar/vscode)のクローンを作成し、 git-ssh-key
ブランチに切り替えてビルドし、実行することができます。 上記の表から、すべての組み合わせで何が起こるかを確認してみてください。 ここでのノイズを最小限に抑えるために、この問題についてコメントすることができます。
@hashhar process.env
全体は、スポーン時に常にGitに渡されます。
https://github.com/Microsoft/vscode/blob/master/extensions/git/src/git.ts#L383
これらの変数はスニペットなしで渡されませんか?
@joaomorenoわかりました。 深く掘り下げると、2つの問題がわかります。
Linux上のほとんどのツールは、「/ usr / lib / ssh / ssh-askpass」にシンボリックリンクされたプログラムを提供しますが、多くは提供しません。 ですから、それは人々が直面している問題だと思います。
ssh-keyがすでにssh-agentキーリングに追加されている限り、SSHでVSCodeを使用することができました。
私は愚かだったと思います。
うまくいかなくてごめんなさい。
心配いりません、あなたがこれに飛び乗っているのはクールです! 👍
私はしばらくの間このエラーに遭遇していて、それは私だと思っていました。 これについてこれ以上の進歩はありますか?
+1
+1
+1
+1
スパムを止めてください! サブスクライブボタンとリアクションボタンを使用し、そのような無駄なコメントを書かないでください。
私も同じ問題を抱えています。
奇妙なことに、私にとってこれはGit Bashで機能しますが、Bash for Windowsでは機能しません(前述のPermission denied (publickey)
エラーが発生します)。
$ eval `ssh-agent`
$ ssh-add /path/to/key
$ code
どちらの場合も、リモートに直接sshすることで、SSHキーが機能することを確認できます。 私が見ることができる唯一の違いは、Bash for Windowsでの起動時に、VSCodeが現在の作業ディレクトリを判別できないことを警告することです。
ここで同じ問題、私はほとんどすべての提案された解決策を試しました。
私はMacOを使用しています
@DavidBabel私は
@letsdevus助けてくれてありがとう、しかし残念ながらそれは専門的な文脈では実行可能ではありません
それを機能させるために私が見つけた唯一の方法は次のとおりでした:
plink
をGit SSHバックエンドとして設定します(環境変数GIT_SSH
)これでうまくいきます。
同じ問題をヒットし、VSCodeのパフォーマンスもノックを再試行し続けるので👎
この問題に自分で遭遇したばかりです。 ありがたいことに、回避策(シェルからコードを開始する)は私にとってはうまくいきますが、問題が修正されればいいのですが。
これにもぶつかっただけで、パテの解決策が役立つようですが、私はパテをまったく持ちたくないと思います。
私もこの問題に取り組んでいます。 私は仕事用に別のアカウントを設定し、個人用のアカウントを持っています。 私は最近、作業ファイルを頻繁に扱っています。 通り抜けることはできますが、毎回パスフレーズを入力する必要があります。 キラーではありませんが、生産性は大幅に低下します。
VSC UIを使用してリポジトリのクローンを作成しようとしても、sshスタイルのgitURLを使用しても機能しないのは少し残念です。 記録のために、私はパスワードで保護されたSSHキーを使用し、SSHエージェントを実行していないことがよくあります。 キーのロックを解除するための追加のパスワードプロンプトは、実際には多少安心できます。特に、変更をプッシュする場合はそうです。 :-)コマンドラインは私にとっては問題なく動作するので、それほど大きくはありません(記録としては、macOSでVSコードを実行しています)。
@gdamoreだから、エージェントなしで実際に機能します...しかし、私たちはWindowsについて話しています。 😝
とにかく、SSHキーのファイルの名前はどれですか? 標準的なものですか? または、VSCodeは適切なファイルを見つけるのに十分ですか?
示されているように、私は主にmacOSでVScodeを実行します。 これがWindowsでどのように機能するのかわかりません。 私はWindowsからgitcommitを実行せず、代わりに共有ファイルシステムに依存しています(Windows開発インスタンスはMacのVM内でゲストとして実行されます)。
私もこのエラーが発生します。 コマンドラインではまったく問題はありませんが、アプリ自体の内部でgitアクティビティを実行できません
仕事の文脈でvscodeをgitideとして役に立たなくする
私はこのブログ投稿に従ってそれを機能させることができました:
http://www.cgranade.com/blog/2016/06/06/ssh-keys-in-vscode.html
私はstackoverflowに関するこの投稿に従ってそれを機能させることができました:
パスフレーズで保護されたキーを使用するOSXでも同じ問題が発生します。
簡単な解決策:
ユーザーを追加し、環境変数と呼ばれるGIT_SSH
へのパスを指定して、 C:\Program Files\PuTTY\plink.exe
(使用して秘密鍵にパスを設定した後tortoise git
)
これは修正する必要があります。VSCodeを毎日のエディターにするわけではありません。 :/問題の進行状況に関する情報はありますか?
vscodeがssh-add
からssh資格情報を取得することを望んでいます。
たとえば、ソースツリーは、追加の構成なしで、使用可能な資格情報を(osxkeychain?を使用して)検出できます。
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
私は今日この問題に直面しました、私はlinuxmintにいます。 キーホルダーを使用しました。
sudo apt install keychain
eval 'keychain --eval SSHKEY'
以上です。
@ Silentz0r最後のコマンドはどこで実行しましたか?
シェルの@ValentinH 、リンクの例を読んでください。
みんなこれは勇敢なコーダーがPRを提供するのを待っているだけです!
OSXでは、 https :
~/.ssh
で、次の内容のconfig
ファイルを作成します。
Host * (asterisk for all hosts or add specific host)
AddKeysToAgent yes
UseKeychain yes
IdentityFile <key> (e.g. ~/.ssh/userKey)
@joaomoreno
私がどれほど「勇敢」であるかはわかりませんが、私はSSHファンです。
12月のPRに取り組みます。
関係するすべての市民...
簡単なセットアップテストの後、Windows 7の構成は非常に簡単であるように見えます(GIT_SSHおよびその他のコメントを参照)。キーチェーンを使用するOSXも同様に簡単だと思います。
セットアップは基本的に外部構成の問題です。 VSCはSSHを使用するために構成や機能を変更する必要はなく、gitはSSHクライアントを呼び出します。 明らかな何かが欠けている場合は申し訳ありません。
セットアップ用のウィザード以外に、コードに追加するのに本当に有益なものを判断しようとしています。
あるコメントは、おそらくworkSpace構成に基づいて環境変数を変更する必要があるかもしれない複数のキーを使用することに言及しています。 それでも、すべてエージェントが処理できます。 gitがこれを直接処理するので、コードにsshを追加するようなことをするのは意味がないと思います。
クレデンシャル管理について:それは本当に次のような安全なエージェントによって処理されることを望んでいます
pagent /キーホルダーなど。
コメント?
「VSCはSSHを使用するために構成や機能を変更する必要はありません。gitはSSHクライアントを呼び出します。明らかな何かが欠けている場合は申し訳ありません。」
(Windowsの場合)
何が起こるのですか
ショートカットからVSCodeを起動し、サードパーティのソフトウェアをダウンロードしてコマンドライン構成を実行していない場合、暗号化されたSSHキーでは機能しません。
一方、Eclipseを開いてGitリポジトリに接続すると、キーのパスフレーズを要求されます。
期待される
他のソフトウェアがインストールされていないシステムにVSCodeを新規インストールすると、パスフレーズを要求するメッセージボックスがポップアップ表示され、それを使用してキーを復号化し、リモートリポジトリに接続します。
@cleidigh SourceTreeは、 従わなくても自動的に機能しますが、Codeではその設定が必要です。 おそらく、彼らがしていることは何でもできるでしょう。
@andrewducker
@BeginnerForLife
Eclipseとソースツリーを少し調べました。 残念ながら、現在、これらのいずれもシステムにインストールできないため、私の知識と経験はGoogleによって制限されています;-)何かが足りない場合は、この点に注意してください。 基本的な概要/違いは次のとおりです。
Eclipse:EGitプラグイン:Java gitクライアントが含まれています。sshクライアントは内部にあるようです。既存のキーの場合はキーのインポートが必要です
SourceTree:グラフィカルgetクライアント、外部sshクライアントが必要(下のスクリーンショットからはWindowsでplinkを想定しています) @BeginnerForLifeこの設定は現在の要件からそれほど遠くないと思います。
VSC:外部git / sshが必要
@andrewduckerあなたの説明は私のコメントを追跡します。ただし、コードがgitとSSHの両方(キーの生成と管理を含む)を実装していない限り、その間に多くのことがあるかどうかは@joaomorenoはそれに話すことができます。
実用的な観点から、私は次のことを指摘したいと思います。
コードの内部にgit / sshの両方がない状態で繰り返しますが、私はまだより少ないオプションを決定していません。 私は絶対にこれに取り組むつもりですが、それはチームの目標と一致し、特に@joaomorenoから祝福を得る
@cleidigh計画が何なのかわかりません。
@joaomoreno
私は他の当事者からのより多くの回答を望んでいましたが、可能な計画についてあなたの意見/好みが必要です。
明確にするために、コードは、わずかな外部構成でgitを介したSSH秘密鍵アクセスに対して問題なく機能するように見えます。 ここのいくつかは、より大きな統合と改善された自己負担体験を示唆しています。
いくつかの可能なアプローチ:
1- git / sshセットアップヘルパー/ウィザードを実装します-sshを検索し、GIT_SSHを設定します-内部追加
2-拡張機能として実装された1と同じ
3-上記を拡張して、初期セットアップ用のSSH / gitのダウンロードを調整します
4-SSHクライアント/ツールの実装-内部追加
5-拡張機能として実装された4と同じ
6-内部でgit / SSHを実装します-Eclipse / egitと同様です
人々が話しているすべてを実装しているわけではないにもかかわらず、1番で十分だと思います(おそらく3番)。 オプション4〜6は、手間がかかりすぎて、主要コンポーネントに大きな変更が加えられているように見えます。
設定@ joaomoreno /すべて?
WindowsのGitでVSCodeを使用してみて、問題点を特定することをお勧めします。 私にとって、主な問題は認証です。
オプション1は間違いなく私のお気に入りです。
@BeginnerForLife
ヘルパー/ SSHの発見があり、セットアップした場合、それは役に立ちますか?
クライアントをインストールする以外に、Windows用のgit用にsshをセットアップしました(すでに持っていました)GIT_SSHを設定しました
また、エージェントでキー指紋を追加しました。
@joaomoreno設定ごとに1つのオプションに焦点を当てます。
私は信じていますが、上記のすべてが実用的であることを約束することはできません。 誰も他の素晴らしいアイデアを持っていないと仮定します
基本的に上記のプロトタイプを作成するのが良いと思います。
追加のフィードバックを歓迎します。
ええ、私はそれらの箇条書きがそれをカバーするべきだと思います。 特に最後の1つ(ユーザーにプロンプトを表示する...)は、多くの人々の問題を解決するはずです。
@BeginnerForLife
ありがとう。 私はこのアプローチから始めます、そしてうまくいけば、他の人が他の入力でチャイムを鳴らします。
PRを行う前に、リポジトリへのポインタを投稿して、人々の意見を確認すると思います。 ここに戻って確認してください
私の進歩を追跡するために。
(1)が最善のアプローチであることに同意します。 そして、それは基本的に私が現時点で行っていることです-まだ実行されていない場合はssh-agentを起動し、環境変数を設定してから、そのコマンドラインからVS-Codeを起動して、環境変数を取得します。
VS CodeがSSH-Agentがまだ実行されていないことを確認し、必要に応じて起動できる場合、それは素晴らしいことです。
PowerShellのGitモジュールを使用してこれらすべてを実行しますが、次のロジックを使用します。
https://help.github.com/articles/working-with-ssh-key-passphrases/
したがって、ノードの観点からは、これが機能することを願っています(ただし、おそらくすべてのOSで機能することを確認する必要があります)
@andrewducker cc:すべて
更新:以前のPRに戻らなければなりませんでしたが、実際にはこれに関して大きな進歩を遂げました。
1日かそこらでこれに戻ることができるはずです。
パスフレーズで保護されたデフォルトの秘密鍵を使用したmacOSHighSierraでも同じです。 パスフレーズは、ログオンセッション中にOSキーチェーンに保存されます。 Macを再起動すると、セキュリティを強化するために最初のgit pull
/ git push
前に再入力する必要があり、それ以降、ログオフするまでパスフレーズは要求されなくなります。 リモートリポジトリと初めて対話するときの端末の動作は次のとおりです。
$ cd /path/to/repo
$ git pull
Enter passphrase for key '/Users/me/.ssh/id_rsa':
[me typing passphrase and pressing enter]
Updating 3e97c76..65a959c
ただし、再起動後に何かをプルしようとしているのがVSCodeの場合、次のエラーが表示されます。
回避策は、ターミナルを開き、リポジトリに移動してgit pull
です。 災害ではありませんが、改善される可能性があります。
__UPD:__興味深いことに、新しいコミットに署名するためにGPGキーのパスフレーズを要求する場合、VSCodeはすぐに機能し、入力フィールドを含むポップアップウィンドウを表示します。
これの状況はどうですか?
現在、エラーGit: [email protected]: Permission denied (publickey).
が表示されています。
~\.ssh
キーペアを作成したユーザーは、コマンドラインからキーペアのパスフレーズを入力して認証できますが、VSCode内からは認証できません。
@cleidigh運がいいですか?
パスワード要求イベントを傍受する方法を誰かが知っていますか? インターセプトされたら、atomが行うことを実行し、使用するテキストボックスを提供する機会があるかもしれないと思います。 しかし、atm私はアイデアに迷っています。
問題がVSCodeではなく環境にあることに気付くまで、私はあらゆる種類の資格情報の問題を抱えていました。 ssh、gitなどを適切に構成していれば、問題は発生しません。これはLinuxとWindowsの両方に当てはまります。 また、問題が発生した場合は、いつでも端末から強制的に実行できます。
他のIDE用の環境を設定する必要はありません。
たとえば、Eclipseでは、直接起動できます。リモートのgitリポジトリにアクセスする必要がある場合は、SSHキーを復号化するためのパスワードの入力を求められます。
Visual StudioCodeも同様に機能するはずです。
すべて:更新
私はこれについてかなりの進歩を遂げましたが、いくつかの理由でそれを脇に置いておかなければならなかったので、1月以来あまり進歩していません。 申し訳ありません。 私はこれを5月に実現したいと思っています。
@ john681611 @ andrewduckerへ
スレッドで前述したように、「クリーンに」実装できない1つの基本的な問題
キーのプロンプトまたは任意のタイプの管理です。 これは、コードが外部GITに依存しているためです。
GITはシステムのSSHに依存しています。 これらを内部的に実装するコード(日食など)がないと、これらの外部コンポーネントと対話するオプションが制限されます。
私の現在のプロトタイプは次のことができます。
@andrewduckerごとに、Eclipseのように応答するのがよいことに同意しましたが、これは、チームがすでに処理している重要な機能を実装する必要があることを意味します。
注:別のアプローチは、SSHの制御に使用できるより多くのセキュリティパラメーターを公式のGITクライアントに処理させることができるかどうかです。 それは現在のアーキテクチャを同じに保つでしょう
すべて/更新
私はプロトタイプの最後で最も重要な部分に取り組んできました。CodeがネイティブパスフレーズGUIプロンプトを提供できるようにするaskpassシムです。 現在、これは可能であり、プラットフォームに適したssh-agentと組み合わせて、資格情報は通常の方法で保存されると思います。
私の問題は、WindowsのGIT BashまたはCMDでSSH_ASKPASS、GIT_ASKPASS、またはcore.askpassを尊重するようにSSHまたはGITを取得できないことです。 表示されるのはターミナルプロンプトだけです。 最も基本的なテストとして、これらの1つまたはすべてを組み込みのgit-gui--askpassに設定しましたが、コマンドラインからテストした場合、プログラムが実行可能であるにもかかわらず、これも機能しません。
これらの方法を利用して、Windowsまたはその他の関連するシナリオでパスフレーズエントリを変更した人はいますか?
Sourcetreeはターミナルもポップアップします。 それは悪いことではありません。
macOS 10.12 Sierra以降で@ValentinHのソリューションに追加するには、 UseKeychain
ディレクティブだけで、私のマシン(macOS 10.13.5 High Sierra Developer Beta、17F70a)の問題を修正します。 AddKeysToAgent
ディレクティブは必要ないようです。 この構成は私のために働きます:
Host github.com
HostName github.com
IdentityFile /path/to/your/ssh/private/key
UseKeychain yes
これの状況はどうですか?
'14581:VS Codeでは、gitsshキーに "id_rsa"という名前を付ける必要があります'この問題の重複としてクローズされました。 これがどのように重複しているかわかりません-「秘密鍵パスワードでgitをサポートしてください」。 これらは別の問題のようです。
編集:これは、私が実行していたターミナルの単一インスタンスの修正にすぎませんでした。 同じコードセッションで新しい端末を開いても、公開鍵エラーが再び発生しました
私のssh-agentがどこかで死んだか、gitに使用している「id_rsa」以外のキーを忘れたようです。 だから私は走った:
eval "$(ssh-agent -s)"
ssh-add path/to/my/github/ssh/private/key
そして、すべてが正常に戻りました。 これは、とにかく新しいSSHキーを設定するときにGitHubが実行するように指示する一連のコマンドです。
私はこのスレッドのほとんどを読んでいないことを認めますが、私にとってはこれはうまくいきました。
@cleidigh @joaomorenoこれはバグではなく、特にmacOSでsshキーを不適切に設定している可能性があります。 シエラは、キーがセッションで保持される方法を根本的に変更しました
パスフレーズを付けずに新しいsshkeyを再生成すると、問題が解決します。 たぶんvscodeはuにパスフレーズを入力させるためのシェルを開くことができないと思います。
ssh-add -K ~/.ssh/id_rsa
使って私のキーをMacキーチェーンに追加する必要がありました。 デフォルトを使用していない場合は、 id_rsa
をキーに置き換えます。
Windows 10の回避策:
git config --global core.sshCommand "C:/Windows/System32/OpenSSH/ssh.exe"
ssh-add
注:Git for Windowsをインストールするときに、bashコマンドをPATHに追加するオプションを選択した場合、ssh-addコマンドが間違った実行可能ファイルを指す可能性があります。 その場合は、付属のキーを手動で実行して、キーをエージェントに追加できます。
C:\Windows\System32\OpenSSH\ssh-add.exe
これで、組み込みのOpenSSH認証エージェントは、パスワードで保護されたキーのロックが解除された状態で起動時に実行され、Gitは独自の代わりにWindowsOpenSSHを使用します。 したがって、毎回パスワードを入力する必要はなく、sshエージェントを手動で起動する必要も、コマンドラインからVSCodeを起動する必要もありません。
LynnScarlettが気付いたとおり、キーのパスフレーズを入力する方法はなく、キーチェーンの使用は安全ではないため、VSCはこの基本機能のサポートを追加しますか?
キーチェーンがどのように安全でないのかわかりません。 さらに、一般的なIDEではパスワードの入力が許可されているため、VSCは両方の入力方法を非常にサポートできます。
私はssh-agentを意味しました私は2つのことを混乱させるかもしれません、私は確かではありません:)
Ssh-agentは、セッションごとにキーをロードするという意味で「安全ではない」だけです。 コンピュータが危険にさらされている場合は、他にも問題があります
これは、ssh-agentを使用することの不安定さをより詳細に説明しています。
http://rabexc.org/posts/pitfalls-of-ssh-agents
乾杯!
これらはすべて要約すると、ルートアクセス権を持つ他の誰かにあなたのマシンを信頼しないでください-とにかくそうすべきではありません。 繰り返しになりますが、その記事の詳細が原因でssh-agentが侵害された場合、より大きな問題が発生します。
@whatsyourgithubソリューションは私のために働いた。 しかし、それは最善の解決策ではないと思います。
VSコードバージョン:コード1.27.2(f46c4c4、2018-09-12T16:17:45.060Z)
OSバージョン:Windows_NT x64 10.0.17134
gitバージョン2.19.0.windows.1
まだ動作していません。
2年が経ちましたが、まだ修正されていません。 同じ問題がAtomにも当てはまるので、これは簡単に追加できるものではないと思いますか? 私が本当に欲しいのは、ソース管理パネルの[その他のアクション... git]ドロップダウンで(パスフレーズを使用して)プッシュすることだけです。
プッシュするたびにパスフレーズを入力できてうれしいです。コマンドラインに移動して生のgitコマンドを入力する必要はありません。
2年が経ちましたが、まだ修正されていません。 同じ問題がAtomにも当てはまるので、これは簡単に追加できるものではないと思いますか? 私が本当に欲しいのは、ソース管理パネルの[その他のアクション... git]ドロップダウンで(パスフレーズを使用して)プッシュすることだけです。
プッシュするたびにパスフレーズを入力できてうれしいです。コマンドラインに移動して生のgitコマンドを入力する必要はありません。
sshの代わりにhttpsを使用してリポジトリのクローンを作成してみてください。 そのため、VSCodeはユーザー名とパスワードを要求します。
VSCodeでGithubプルリクエストをチェックするためにAtomから来たばかりですが、最初に考えたのは
正しいアクセス権があることを確認してください
リポジトリが存在します。
git show:index.html
git pull --tags origin master
git show:index.html
[email protected] :アクセスが拒否されました(公開鍵)。
致命的:リモートリポジトリから読み取ることができませんでした。
正しいアクセス権があることを確認してください
リポジトリが存在します。
そのため、パスワードも入力せずに、sshキーのみでこのオプションを使用することはありません。
そのため、後でVSコードとGithub PullRequest拡張機能に戻ります。
私はコミュニティがこれまでに行ってきたことを気に入っており、将来的にはセキュリティを優先してこれを使用することを楽しみにしています。
sshの代わりにhttpsを使用してリポジトリのクローンを作成してみてください。 そのため、VSCodeはユーザー名とパスワードを要求します。
ありがとう、それは私にもうまくいきます。 また、 Git for Windows資格情報マネージャーをインストールし、VSコードのgitbashシェルに次のコマンドを入力した場合:
git config --global credential.helper manager
次に、GitlabのユーザーIDとパスワードを再入力しなくても、同期して作業をプルします。
それがGitlabリポジトリパスのデフォルトであることを考えると、SSHについても同じことができれば素晴らしいと思います。
@whatsyourgithub 、あなたのソリューションを使用したい(原始的でバグのある「コマンドプロンプトからVSCを起動する」よりも見栄えが良い)が、VSCエラーメッセージが表示されます:
Git:そのようなIDはありません:/C/Users/myuser/.ssh/myrsaKey_rsa
ファイルはそこにありますが。
そして、別のこと... C:\ Windows \ System32 \ OpenSSHssh-add.exeを試しているときに、そのようなファイルやディレクトリはありません。
これらのコマンドを入力するためにVSCodePowerShellを使用しています
何か案は?
SSHではなくhttpsに切り替えました。 それが私がそれを上手にプレイさせる唯一の方法です。 興味深いことに、 Githubは実際にはSSHではなくhttpsの使用を推奨しています。
@whatsyourgithub 、あなたのソリューションを使用したい(原始的でバグのある「コマンドプロンプトからVSCを起動する」よりも見栄えが良い)が、VSCエラーメッセージが表示されます:
Git:そのようなIDはありません:/C/Users/myuser/.ssh/myrsaKey_rsa
ファイルはそこにありますが。
そして、別のこと... C:\ Windows \ System32 \ OpenSSHssh-add.exeを試しているときに、そのようなファイルやディレクトリはありません。
これらのコマンドを入力するためにVSCodePowerShellを使用しています
何か案は?
最初にVSCodeの外部でPowershellを開いてみますが、それは問題ではありません。
OpenSSHは、最新バージョンのWindows10とともにインストールされることになっています。更新してみてください。
それでも問題が解決しない場合は、[設定]> [アプリ]> [アプリと機能]> [オプション機能の管理]> [機能を追加]に移動して、OpenSSHを探してください。
@whatsyourgithub 、あなたのソリューションを使用したい(原始的でバグのある「コマンドプロンプトからVSCを起動する」よりも見栄えが良い)が、VSCエラーメッセージが表示されます:
Git:そのようなIDはありません:/C/Users/myuser/.ssh/myrsaKey_rsa
ファイルはそこにありますが。
そして、別のこと... C:\ Windows \ System32 \ OpenSSHssh-add.exeを試しているときに、そのようなファイルやディレクトリはありません。
これらのコマンドを入力するためにVSCodePowerShellを使用しています
何か案は?最初にVSCodeの外部でPowershellを開いてみますが、それは問題ではありません。
OpenSSHは、最新バージョンのWindows10とともにインストールされることになっています。更新してみてください。
それでも問題が解決しない場合は、[設定]> [アプリ]> [アプリと機能]> [オプション機能の管理]> [機能を追加]に移動して、OpenSSHを探してください。
こんにちは。
返信ありがとうございます。
OpenSSH(クライアント)はすでにインストールされています。
Standaone PowerShellを使用して手順を繰り返しましたが、エラーメッセージが表示され続けますno such identity: /C/Users/<user>/.ssh/RSAPRIVKEY_rsa: No such file or directory
これはRSAPRIVKEY_rsaの所有権に関連しているでしょうか? PowerShellを使用してキーを発行しませんでしたが、別の場所からコピーしました(とにかく、ソースツリーまたはGit GUIで機能します)
@whatsyourgithub 、あなたのソリューションを使用したい(原始的でバグのある「コマンドプロンプトからVSCを起動する」よりも見栄えが良い)が、VSCエラーメッセージが表示されます:
Git:そのようなIDはありません:/C/Users/myuser/.ssh/myrsaKey_rsa
ファイルはそこにありますが。
そして、別のこと... C:\ Windows \ System32 \ OpenSSHssh-add.exeを試しているときに、そのようなファイルやディレクトリはありません。
これらのコマンドを入力するためにVSCodePowerShellを使用しています
何か案は?最初にVSCodeの外部でPowershellを開いてみますが、それは問題ではありません。
OpenSSHは、最新バージョンのWindows10とともにインストールされることになっています。更新してみてください。
それでも問題が解決しない場合は、[設定]> [アプリ]> [アプリと機能]> [オプション機能の管理]> [機能を追加]に移動して、OpenSSHを探してください。こんにちは。
返信ありがとうございます。
OpenSSH(クライアント)はすでにインストールされています。
Standaone PowerShellを使用して手順を繰り返しましたが、エラーメッセージが表示され続けますno such identity: /C/Users/<user>/.ssh/RSAPRIVKEY_rsa: No such file or directory
これはRSAPRIVKEY_rsaの所有権に関連しているでしょうか? PowerShellを使用してキーを発行しませんでしたが、別の場所からコピーしました(とにかく、ソースツリーまたはGit GUIで機能します)
OK。 解決しました。./ssh/configファイルにsshキーへのパスがありました。sC:\ Users \
次に、キーを登録するだけで、それだけでした。
ありがとう
@whatsyourgithub 、また邪魔してすみません。 私は同僚を助けようとしていますが、彼は成功していません(上記のように行うことは私にとってはうまくいきますが、彼にとってはうまくいきません)。 これらは症状です:
彼はPSコンソールからgitフェッチを実行できますが、gitacora(自動的に同期するプラグイン-私も問題なく使用しています)を使用してプッシュまたは同期すると、次のエラーメッセージが表示されます。
Permission denied (publickey).
C:\Windows\System32\OpenSSH\ssh-add.exe -L
公開鍵を取得し、PSからコマンドgit fetchを使用すると機能するため、OpenSSHによって鍵が追加されたことがわかります。
彼が診断/修正するのにどのように役立つかについてのアイデアはありますか?
@whatsyourgithub 、また邪魔してすみません。 私は同僚を助けようとしていますが、彼は成功していません(上記のように行うことは私にとってはうまくいきますが、彼にとってはうまくいきません)。 これらは症状です:
彼はPSコンソールからgitフェッチを実行できますが、gitacora(自動的に同期するプラグイン-私も問題なく使用しています)を使用してプッシュまたは同期すると、次のエラーメッセージが表示されます。
Permission denied (publickey).
C:\Windows\System32\OpenSSH\ssh-add.exe -L
公開鍵を取得し、PSからコマンドgit fetchを使用すると機能するため、OpenSSHによって鍵が追加されたことがわかります。
彼が診断/修正するのにどのように役立つかについてのアイデアはありますか?
キーがgithubアカウントにリンクされていないか、githubアカウントが共同編集者としてリポジトリに追加されていないようです。
キーがgithubアカウントにリンクされていないか、githubアカウントが共同編集者としてリポジトリに追加されていないようです。
私はbitbucketサーバーを管理していて、そこに彼のpubキーを追加しました(実際、彼はPowerShell経由でコマンドラインを使用するとフェッチとプッシュにアクセスできます)。
それとも私があなたの答えから捕まえられないものですか?
ssh-add -K ~/.ssh/id_rsa
使って私のキーをMacキーチェーンに追加する必要がありました。 デフォルトを使用していない場合は、id_rsa
をキーに置き換えます。
macOS High Sierravsコード
[email protected] :アクセスが拒否されました(公開鍵)。
致命的:リモートリポジトリから読み取ることができませんでした。
これにタグを付けるのは、コマンドラインからは完全に正常に機能したにもかかわらず、vscode内で統合gitが機能しない問題が修正されたためです。
@whatsyourgithub新しいid_rsaを生成した後、 git config --global core.sshCommand "C:/Windows/System32/OpenSSH/ssh.exe"
経由で動作するようです。
ssh-add .ssh\id_rsa
を介して終了したキーを使用すると、エラーが発生します。 キーを追加できないのはなぜですか? 以前に追加したものと同じキーを使用したいと思います。@ 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
更新はありますか?
近い将来これを処理する計画はありますか?
VS Codeのドキュメント(https://code.visualstudio.com/docs/editor/versioncontrol)によると:
VSCodeでSSHGit認証を使用できますか?
はい。ただし、VS Codeは、パスフレーズなしのSSHキーで最も簡単に機能します。 パスフレーズ付きのSSHキーをお持ちの場合は、SSH環境を継承するためにGitBashプロンプトからVSCodeを起動する必要があります。
このページの日付は2018年12月12日です。
そのため、パスフレーズなしで新しいsshキーを生成し(プロンプトが表示されたら空のままにして、前のキーを上書きすることにより)、GHのアカウントに追加し、 ssh-add.exe ~\.ssh\id_rsa
実行してssh-agentにIDを追加しました。 これで、すべてが機能します。
他の人がこれを確認できる場合は、公式のVS Codeドキュメントに、git-bashからVS Codeを起動することによってのみパスフレーズで機能すると明示的に記載されているため、このトピックを閉じることをお勧めします。
他の人がこれを確認できる場合は、公式のVS Codeドキュメントに、git-bashからVS Codeを起動することによってのみパスフレーズで機能すると明示的に記載されているため、このトピックを閉じることをお勧めします。
ドキュメントには「最も簡単に」と書かれていますが、キーにパスフレーズが含まれているとまったく機能しないというわけではなく、GitBashプロンプトからVSCodeを起動するという提案は、Git-for-Windowsを使用している人にのみ必要です。キーを管理するSSHエージェント。
WindowsのSSHエージェント(Git for Windowsに付属しているものではない)を使用していることを実際に確認し、(パスワードで保護された)SSHキーをロードして、通常どおり(特定のコマンドプロンプトからではなく)VSCodeを起動します。キーを必要とするリポジトリに正常にgitpush / pullできます。
git bashを介してVSCodeを開くと、sshキーが要求され、VScodeではターミナルでsshパスフレーズが要求されることを確認しました。
ターミナルで可能であったのに、Windows 10のVSCodeが_ssh:// repo_からプッシュ/プルしないという同様の問題がありました。
git-for-windowsでCMDerを使用しており、VSCodeはこれらのバイナリを指すgit.pathで構成されています。 また、_%USERPROFILE%\。ssh_ディレクトリにssh構成ファイルがあり、必要なすべてのオプションとIDファイルが公開鍵ファイルに設定されています。 KeeAgentを備えたKeePassがキーを提供しています。
最初にターミナル(CMDer)を実行し、次にそこからコードを実行する前述の手順は正常に機能しますが、私はそれが好きではありませんでした。 だから私は(成功して)別のアプローチを試みました:
git.exeディレクトリに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
(SSH_AUTH_SOCKパスにはスラッシュが必要です)そしてコード内のgit.pathオプションをポイントしました。
これでコードが起動し、追加の「ハック」なしで_〜 / .ssh / config_ファイルを読み取ったようで、エージェントを使用できるようになりました。
編集:
SSH_AUTH_SOCK環境変数をグローバルに設定することも役立つと思います-すべてのアプリケーションがキーにアクセスできるコストがかかります...
"you'll need to launch VS Code from a Git Bash prompt to inherit its SSH environment."
私がマイクロソフトから聞いた中で最も平凡なことの1つ。 sshを機能させるために、特定のコマンドラインからVSCodeを起動する必要はありません。 多分適切な解決策を実装しようとします。
やり残し? 本当に?
この問題により、私はpowershellとposh-gitに切り替えました。これはかなりうまく機能します。 ssh-agentがシームレスに機能するためには、以下を$profile.CurrentUserAllHosts
に追加する必要がありました(デフォルトは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
他の人がこれを確認できる場合は、公式のVS Codeドキュメントに、git-bashからVS Codeを起動することによってのみパスフレーズで機能すると明示的に記載されているため、このトピックを閉じることをお勧めします。
私はここで同意しなければなりません:この問題はVS Codeでの適切なSSHパスフレーズサポートの欠如に関するものであり、文書化された回避策は単にそれです-回避策。 怠惰なユーザーがパスフレーズの適切なセキュリティをスキップする誘惑はすでに多すぎるため、最新のツールを使用すると、正しいことを簡単に実行できるはずです。
他の人が上で提案したことに基づいて、私はbashスクリプトファイル(つまりprojectName.sh
)を作成し、それに次のように書きました。
"location/to/Code.exe" "location/to/project"
これで、ファイルをダブルクリックしてVSCodeを開き、パスフレーズ付きの証明書を操作するだけです。
ところで:それが他の人がこの問題に遭遇するのを助ける場合に備えて、私もしなければなりませんでした:ここで説明されているようにgit config --global http.sslBackend schannel
。
2年の長い年月を経て、「パスフレーズのあるキーを使用してsshを使用してgitを操作する」という基本的なことは、見苦しい回避策を使用せずにまだ対処されていないことに困惑しています。 VSCodeは優れたエディターIMHOですが、この「機能」は本当に必要です。 優先してください
これは私がstackoverflowに投げた古い投稿です。これは役に立つかもしれません。 1つのオプションは、Windows資格情報マネージャーを使用することです: https :
問題は、VSCodeがキーストアマネージャーとしてSSH / HTTPS資格情報の処理を担当する必要があるかどうかだと思います。 これは、OS、サードパーティプログラム、または最初の2つのポイントと混ざり合うgitの適切な構成によって処理される必要があるようです。
この機能のサウンドが気に入っている限り、UnixとWindowsには、これをVSCodeに追加せずにこの問題を処理する方法があるはずです。
これらのgithubの記事のいずれかが役立つかどうかはわかりません: https :
最終的には、Windowsでbashを使用するように指示しているように聞こえます/別のbash Windowsの代替手段で、ハッキーな回避策で同じ問題に戻ることができます:\
@ctsstcはい、Git Credentials Manager for Windowsをインストールしましたが、何らかの理由で機能しません。 これはVSCodeの責任ではない可能性があることを認識しています。 たとえば、Android StudioとIDEAベースのIDEでは、gitバイナリを呼び出すだけで、操作にパスフレーズが必要な場合にのみ統合されます。IDEはパスフレーズを安全に保持し、Gitに渡します。おそらくこれは良いアプローチ。 たぶんこれが彼らが欠けている唯一のものですか?
@ctsstcまったくそう思わないので、CLIプログラム(この場合はGIT)へのユーザーインターフェイスを実装して、プログラムに入力が必要になったときに問題がなくなったと主張する
ここで重要な点は、AtomがgitリポジトリのSSHパスフレーズを記憶していることだと思います。 確かに、vscodeは両方とも同じ編集エンジンに基づいているので、同じことができますか?
問題は、VSCodeがキーストアマネージャーとしてSSH / HTTPS資格情報の処理を担当する必要があるかどうかだと思います。
私はそうすべきだとは思いませんが、それがここで求められていることでもないと思います。 @Ivancaが指摘したように、VSCはgitの上にUIを表示することを選択したため、問題は、そのUIを介してどのくらいのgit機能を公開する必要があるかです。 すべてのあいまいなgit操作がVSCを介して利用できるとは思いませんが、プル/プッシュは基本です-基になるパスフレーズの課題にUI接着剤を提供せずに、VSCがそれらを完全にサポートすると主張できるとは思いません。
したがって、期待される結果は、パスワードの入力を求めることです。 それは合理的な質問/機能だと思います。
表示するのではなく:
Permission denied, please try again.
Permission denied (publickey,password).
数日前にMacでこの機能を最近見たような気がしますが、Windowsに実装されていないか、システムキーストアにアクセスするためにシステムパスワードを要求していた可能性があります。
編集、Macでこれを試してみました:
したがって、これはMacではサポートされているように見えますがWindowsではサポートされていないようです(この問題はまだ存在すると思います)。したがって、この機能は2つのOS間で同等になります。
これに関する更新はありますか? この問題が報告されてから2年が経ちましたが、それでもVSCodeをGitSSHで動作させることができません。
誰かがWindowsでこれらのいずれかを試しましたか?
@ctsstcMacのターミナルタブで動作することを確認できます。 不足しているのは、GUIからプル/プッシュフェッチ機能を使用するときにパスフレーズの入力を求めることです。 キーにパスフレーズがあるという事実を無視し、null / nilパスワードを送信すると、git操作が失敗します。
VSCがパスフレーズの資格情報をキャッシュすることを決定したかどうかに関係なく、これに対処する必要があると固く思います。 rsaキーにパスフレーズがある場合でも失敗しないでください。キーの入力を求めてください。
これはいつ起こりますか?
これは修正される予定ですか? Windowsで同じ問題
希望に満ちていないようです。 私はあきらめてSSHからhttpsに切り替えました。
私の現在の回避策:私は通常、VSCodeでターミナルを開いています(npmとの対話などに使用しています)ので、そこからgit push
します。 それがどのように機能するかではありませんが、少なくともパスワードの入力を求められます。
macOSでは、これを最後に~/.ssh/config
に追加しました(これは重要です。下には何も入れないでください)。
Host *
AddKeysToAgent yes
UseKeychain yes
それから私はgit pull
ので、macOSは私のsshパスワードを要求しました。 その後、macOSがパスワードを再度要求することはないため、VSCodeのバージョン管理は正常に機能しています。
それが誰かを助けることを願っています。
乾杯!
その他の回避策:
誰かがWindowsでこれらのいずれかを試しましたか?
上記のように、ターミナルからgitをプッシュすることで回避策としてwin32-opensshを使用します。 認識されているssh://パスの欠如は、これに関連して私がすでに提出した問題です。 私の主な使用例は、gitやpythonなどの他の拡張機能がssh://の解釈方法を知らないために機能しないsshfs拡張機能を使用することです。
これをサポートする計画はありますか?
これはまだ問題です。 回避策はすべての人にとってオプションではありません。 たとえば、私のマシンは(潜在的に)他の人からアクセスされる可能性があるため、キーのロックを解除しません。 私の場合、コマンドラインのgitは単にパスワードを要求しますが、VSCodeはポップアップで同じことを行う必要があります。
実際、これは2年後の機能ではないことにショックを受けましたが、なぜこれが取り上げられて優先されなかったのか疑問に思っています。
現在VSCバージョンを使用しています1.34.0
この問題は修正されていません。
ここでも、Windows 10でこの問題が発生しています。OpenSSHがWindows10に含まれているので、Puttyを取り除きましたが、VS Codeはそれを尊重していないようです。 VSCodeでターミナルを手動でプッシュおよびプルする必要があります。これは正常に機能しますが、ボタンをクリックするだけで同期できるのが気に入りました。
@ arcs- gitがSSHキーの子プロセスと対話する方法を提供していないため、これが修正される可能性は低いです。 他の人があなたのマシンにアクセスできる場合は、デスクから離れているときにロックしてください。 それ以外の場合は、macOSまたはWindowsでssh-agentを起動して、ここで説明されているようにこの問題を回避できます: https :
@ flaw600このプロセスは、ssh-agentが初期化された同じgit-bashウィンドウからコードを起動した場合にのみ役立つようです。これは少し不格好で、エクスプローラーでの右クリック拡張機能の使用があまり使用されないようにします。
それが3年以上経過していて、このリンクがまだ適用可能であるという事実は残念なようです。
https://nathan.alner.net/2015/08/24/vs-code-ide-with-passphrased-git-ssh-keys/
スタートメニューからcode
を開くと、ssh-agentが無視され、プル/プッシュに失敗します。
助言がありますか? 他のプラットフォームと比較して、現在開発を行うことは非常に大きな問題です。
httpsの使用は、しばらくの間、優れたソリューションでした。 アクセス用の特定のトークンを作成できるので、ても、そのすべてのビットは安全です。 Windows SCM資格情報マネージャーは、すべてを自動的に処理します。
ボーナスとして、HTTPSは実際にはSSHよりも
@gdamore :HTTPSが
SSHよりも速いですか?
月曜、午前11時45分に2019年6月17日には、gdamore [email protected]は書きました:
httpsの使用は、しばらくの間、優れたソリューションでした。 そのすべてのビットとして
アクセス用の特定のトークンを作成できるため、安全です。
Windows SCM資格情報マネージャーは、すべてを自動的に処理します。ボーナスとして、HTTPSは実際にはSSHよりも
—
あなたがコメントしたのであなたはこれを受け取っています。
このメールに直接返信し、GitHubで表示してください
https://github.com/microsoft/vscode/issues/13680?email_source=notifications&email_token=AFLBAENFUKYEOE3WLKBGCJLP265Q7A5CNFSM4CSXV3P2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2
またはスレッドをミュートします
https://github.com/notifications/unsubscribe-auth/AFLBAEOC5BVCGGJ7EDXTINTP265Q7ANCNFSM4CSXV3PQ
。
特にgitではありませんが、他の用途(大きなファイルのコピー)では、それを見てきました。 これは、SSHがインタラクティブな使用により適した値を持っているように見えるTCP層で設定されたものに本当に関連していると思いますが、HTTPは実際にファイルを移動するためにより最適化される傾向があり、これは実際にgitがこの場合に行っていることです。
私はこれを言うのは嫌いですが、それは魔法のように私のために働き始めました。 PowershellまたはCMDを介してSSHを開始していたかどうかはわかりません-わかりません! たくさんの試みをして、それが魔法のように機能しました。
Windowsでは、SSHエージェントとしてpageant
を使用してから、環境変数GIT_SSH
をplink
ます。 これらのツールは両方ともPuTTYの一部であり、TortoiseGitにもバンドルされています。
Macではダメですか
水、2019年7月3日には、11:44 AMジャスティン[email protected]は書きました:
Windowsでは、SSHエージェントとしてページェントを使用してからenvを設定できます
plinkする変数GIT_SSH。 これらのツールは両方ともPuTTYの一部であり、
TortoiseGitにバンドルされています。—
あなたがコメントしたのであなたはこれを受け取っています。
このメールに直接返信し、GitHubで表示してください
https://github.com/microsoft/vscode/issues/13680?email_source=notifications&email_token=AFBZHXFVMRQ4DBPV2TLBBGTP5TJN7A5CNFSM4CSXV3P2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKT
またはスレッドをミュートします
https://github.com/notifications/unsubscribe-auth/AFBZHXD63DGD5FUXRJYMLXDP5TJN7ANCNFSM4CSXV3PQ
。
@ Jazun713 Macはhttps :
なぜこれがまだ問題なのですか?
うわー、それで3年後もssh経由でVSコードを接続することはできません、少なくともコマンドラインからそれを開始するために
パスフレーズを設定していないので、パスフレーズを乗り越えることはできませんでしたが、どういうわけか、ルートとして(またはWindowsによって管理者として)開かれると、VSCodeに少なくともsshを使用するように設定させることができました。 これは、Opensshをインストールした後、またはWindowsでPuttyとの接続を設定した後です。 sshの構成を確認してインストールした後、 https://help.github.com/en/articles/testing-your-ssh-connectionの手順に従ってます)
バージョン1.36.1を使用しても、パスフレーズを使用してSSH経由でGithubに接続することはできません。キーからパスフレーズを削除する必要がありました。 何がそんなに難しいの? HTTPSを使用すると、gitユーザーとパスワードを要求します...(複数回、それが私がそれを使用したくない理由です)。
これはちょっと面倒です。 SSHキーでパスワードを使用すると、優れたセキュリティが促進されます。 これは技術的には2FAの形式です(持っているもの:キー+知っているもの:パスワード)。 私はMacOSでこのエディターを使用していますが、すべてのgit操作のためにコンソールに飛び込むのは本当に面倒です。 VS GitUIは失敗します。 パスワード入力をポップする必要があります
@ ronin1以前のコメントをチェックしましたか?
macOSでは、これを最後に
~/.ssh/config
に追加しました(これは重要です。下には何も入れないでください)。Host * AddKeysToAgent yes UseKeychain yes
それから私は
git pull
ので、macOSは私のsshパスワードを要求しました。 その後、macOSがパスワードを再度要求することはないため、VSCodeのバージョン管理は正常に機能しています。それが誰かを助けることを願っています。
乾杯!
上記は私のために働きます。 おそらくここにメモを入れることができます: https :
これは、Windowsで解決策または適切な回避策を取得するのに最適です。
「適切な回避策」は、SSHの代わりにHTTPS URLを、git-scm資格情報マネージャーとともに使用することです。 私にぴったりです。
Mail for Windows10から送信
差出人:カイリチャードソン
送信日:2019年8月28日水曜日9:33 AM
宛先:microsoft / vscode
Cc:gdamore; 言及する
件名:Re:[microsoft / vscode]秘密鍵パスワードでgitをサポート(#13680)
これは、Windowsで解決策または適切な回避策を取得するのに最適です。
—
あなたが言及されたのであなたはこれを受け取っています。
このメールに直接返信するか、GitHubで表示するか、スレッドをミュートしてください。
@gdamoreこれは正しい回避策ではありません。 この問題は、特にSSHプロトコルを使用する場合に発生します。 管理者がhttp(s)Git操作を明確に許可していないGitサーバーを使用している人もいるため、httpsを使用するように指示しても解決策はありません。
@ Kai-Richardson SSHエージェントをサポートするSSHコマンドを使用するようにGitを構成し、そのエージェントでキーを開くと、Windowsで機能します。
GIT_SSH
をTortoiseGitインストールフォルダーのTortoiseGitPlink.exe
に設定し、含まれているputtygen.exe
を使用して秘密鍵をPPK形式に変換してから、 pageant.exe
で秘密鍵を開きますGIT_SSH
をplink.exe
、puttygen / pageantを使用します。ssh-add <path to key file>
で秘密鍵を開き、環境変数GIT_SSH
をssh.exe
(通常はC:\Program Files\OpenSSH-Win64\ssh.exe
)。 ここでの私の唯一の問題は、8.0リリース以降、従来の( -----BEGIN RSA PRIVATE KEY-----
形式、代わりに-----BEGIN OPENSSH PRIVATE KEY-----
形式を優先する)秘密鍵の読み取りに問題があるように見えることです。Visual Studio Codeを更新しましたが、アプリケーションを介してgithubとやり取りできなくなりました。 バージョン1.37.1
OS:Windows 10 Pro:バージョン:10.0.17134ビルド17134
MSチームはSSHが嫌いですか?
どのIDEが実際にSSHパスコードをサポートしていますか? Jetbrainsの製品もそうではないからです。 したがって、SSHパスコードをネイティブにサポートしていない上位3つのベンダーのうち2つがあります(他のベンダー-Github-AtomエディターがSSHパスコードをネイティブにサポートしているかどうかはわかりません)。
2019年8月29日には、20:43で、クリスMigutの[email protected]は書きました:
Visual Studio Codeによって更新され、アプリケーションを介してgithubと対話できなくなりました。 バージョン1.37.1
MSチームはSSHが嫌いですか?
—
あなたが言及されたのであなたはこれを受け取っています。
、直接このメールに返信GitHubの上でそれを見るhttps://github.com/microsoft/vscode/issues/13680?email_source=notifications&email_token=ACKS4GSGFBF2OGBCXPN55LDQHB3NLA5CNFSM4CSXV3P2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD5QI7ZA#issuecomment-526421988 、またはスレッドミュートhttps://github.com/notifications/をunsubscribe-auth / ACKS4GTHNDBY5DETIRNVX6TQHB3NLANCNFSM4CSXV3PQ 。
エラーが発生しましたか? WindowsでダブルブートとしてKaliLinuxを起動するだけです
PrinceKK301088
2019年8月31日土曜日、午前8時59分flaw600、 notifications @ github.comは次のように書いています。
どのIDEが実際にSSHパスコードをサポートしていますか? Jetbrainsの製品だから
どちらもしないでください。 つまり、SSHをサポートしていない上位3社のベンダーのうち2社があります
ネイティブにパスコード(および他の-Github-私はそれらが
AtomエディターはSSHパスコードをネイティブにサポートします)。2019年8月29日には、20:43で、クリス・Migut [email protected]
書きました:Visual Studio Codeによって更新され、githubと対話できなくなりました
アプリケーションを介して。 バージョン1.37.1MSチームはSSHが嫌いですか?
—
あなたが言及されたのであなたはこれを受け取っています。
このメールに直接返信し、GitHubで表示<
https://github.com/microsoft/vscode/issues/13680?email_source=notifications&email_token=ACKS4GSGFBF2OGBCXPN55LDQHB3NLA5CNFSM4CSXV3P2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2
またはスレッドをミュートします<
https://github.com/notifications/unsubscribe-auth/ACKS4GTHNDBY5DETIRNVX6TQHB3NLANCNFSM4CSXV3PQ
。—
このスレッドにサブスクライブしているため、これを受け取っています。
このメールに直接返信し、GitHubで表示してください
https://github.com/microsoft/vscode/issues/13680?email_source=notifications&email_token=AH4ENDPM4O6N2MT3BFLXGRTQHG66NA5CNFSM4CSXV3P2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5
またはスレッドをミュートします
https://github.com/notifications/unsubscribe-auth/AH4ENDORTBRU3GTGOWJFOVLQHG66NANCNFSM4CSXV3PQ
。
リンクはキーで保護されています
私のiPhoneから送信された
2019年9月16日には、13:32で、vitasam [email protected]書きました:
どのIDEが実際にSSHパスコードをサポートしていますか? Jetbrainsの製品もそうではないからです。 したがって、SSHパスコードをネイティブにサポートしていない上位3つのベンダーのうち2つがあります(他のベンダー-Github-AtomエディターがSSHパスコードをネイティブにサポートしているかどうかはわかりません)。
…
2019年8月29日、午後8時43分、Chris Migut @。 * >書き込み:ビジュアルスタジオコードによって更新され、アプリケーションを介してgithubと対話できなくなりました。 バージョン1.37.1MSチームはSSHを嫌っていますか? —あなたが言及されたのであなたはこれを受け取っています。 このメールに直接返信、GitHubの上でそれを見る<#13680?email_source =通知&email_token = ACKS4GSGFBF2OGBCXPN55LDQHB3NLA5CNFSM4CSXV3P2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD5QI7ZA#issuecomment-526421988>、またはスレッドミュートhttps://github.com/notifications/unsubscribe-auth/ACKS4GTHNDBY5DETIRNVX6TQHB3NLANCNFSM4CSXV3PQを。同じ問題について重複したスレッドがあり、誰かがAtomがSSHキーをネイティブにサポートしていると言いました: https :
—
あなたが言及されたのであなたはこれを受け取っています。
このメールに直接返信するか、GitHubで表示するか、スレッドをミュートしてください。
興味深いことに、私はリンクを開くことができます。 Atomからのダイアログ:
上記のssh設定エントリを追加する以外に
Windowsの場合
Set-Service ssh-agent -StartupType Automatic
PowerShellで
これで、vsコードはプロンプトを表示しないはずです...
上記のssh設定エントリを追加する以外に
Windowsの場合
Set-Service ssh-agent -StartupType Automatic
PowerShellで
これで、vsコードはプロンプトを表示しないはずです...
この試みでいくつかの許可エラーが発生します。 助言がありますか?
Set-Service:サービス 'OpenSSH認証エージェント(ssh-agent)'は、次のエラーのために構成できません:アクセスが拒否されました
行:1文字:1
+ Set-Service ssh-agent-StartupType自動
+~~~~~~~~~~~~
+ CategoryInfo:PermissionDenied:(System.ServiceProcess.ServiceController:ServiceController)[Set-Service]、ServiceCommandException
+ FullyQualifiedErrorId:CouldNotSetService、Microsoft.PowerShell.Commands.SetServiceCommand
この試みでいくつかの許可エラーが発生します。 助言がありますか?
@seantma :必要なアクセス許可を得るには、PowerShellを管理者として実行する必要があります。
上記のssh設定エントリを追加する以外に
Windowsの場合
Set-Service ssh-agent -StartupType AutomaticPowerShellで
これで、vsコードはプロンプトを表示しないはずです...
私の場合は役に立ちませんでした。ローカルコミットをオリジン(リモート)と同期しようとすると、VCodeは次のエラーを返します。
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
VCodeはグローバルGIT構成(名前と電子メール)を使用していないようですが、そうではありませんか?
これを実行し、機能します(パスフレーズ付きのsshキーではテストされていません):
それでおしまい
これは適切な解決策ではありません、@ leductan-nguyen。 この問題は特にパスワードで保護されたキーに関するものであるだけでなく、複数のキーが必要な場合は機能しません(たとえば、GitHub用とGitLab用に1つずつあります)。
これで何か進歩はありますか?
@Badbreaddead 、いくつかの解決策または回避策が上記に投稿されています。 使用しているOSによって異なります。
@ dschu-labのソリューションに従って、追加します
Host *
AddKeysToAgent yes
UseKeychain yes
~/.ssh/config
の_最後まで_。 sshキーに標準名がない場合は、他の人が指摘しているように、 IdentityFile /path/to/your/ssh/private/key
指定する必要があるかもしれません。
パスフレーズを初めて使用するときに追加するように求められ、その後の使用のためにキーチェーンに保存されます。
@ Silentz0rが上記で指摘したsudo apt install keychain
を介してキーチェーンをインストールします。 次に、彼はkeychain --eval <ssh-key-name>
実行しますが、 keychain <path-to-ssh-key>
も同じ効果があるようです。 .bashrc
または同等のものに追加すると、うまくいくはずです。
@geordanrの回避策は、私のために働いた唯一のものです。 Git Bashで次のコマンドを実行して、エージェントにsshキーを追加し、同じセッションでコードを実行します。
$ eval `ssh-agent`
$ ssh-add /path/to/key
$ code
毎回最初の2つのコマンドを入力する手間を省きたい場合は、次のようなものを追加することもできます。
#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
Git Bashの~/.bashrc
ファイルに移動して、ssh-agentを自動的に起動します(ここから取得し、わずかに調整します)。 キーに標準名がない場合は、 ssh-add
後にキーへのパスを指定する必要があります(例: ssh-add ~/.ssh/id_rsa_personal_key
。
どのIDEが実際にSSHパスコードをサポートしていますか? Jetbrainsの製品もそうではないからです。 したがって、SSHパスコードをネイティブにサポートしていない上位3つのベンダーのうち2つがあります(他のベンダー-Github-AtomエディターがSSHパスコードをネイティブにサポートしているかどうかはわかりません)。
…
2019年8月29日、午後8時43分、Chris Migut @ 。 * >書き込み:ビジュアルスタジオコードによって更新され、アプリケーションを介してgithubと対話できなくなりました。 バージョン1.37.1MSチームはSSHを嫌っていますか? —あなたが言及されたのであなたはこれを受け取っています。 このメールに直接返信、GitHubの上でそれを見る<#13680?email_source =通知&email_token = ACKS4GSGFBF2OGBCXPN55LDQHB3NLA5CNFSM4CSXV3P2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD5QI7ZA#issuecomment-526421988>、またはスレッドミュートhttps://github.com/notifications/unsubscribe-auth/ACKS4GTHNDBY5DETIRNVX6TQHB3NLANCNFSM4CSXV3PQを。
PyCharmはパスフレーズで私のsshキーを問題なくサポートし、パスフレーズを何度も要求し、すべてのgit機能が期待どおりに機能します。
Git Bashで次のコマンドを実行して、エージェントにsshキーを追加し、同じセッションでコードを実行します。
$ eval
ssh-agent
$ ssh- / path / to / keyを追加します
$コード
価値があるので、これはLinuxでも同様に機能します。ターミナルからcode
を起動する必要はありません。 ショートカットも問題なく動作します。 これらのコマンドの直後に、端末自体を閉じることができます。
私は少なくとも別の回避策を知っています:
ssh-askpass
をインストールします(Arch Linuxでは、これはx11-ssh-askpassとseahorseパッケージの両方によって提供され、バイナリはそれぞれ/usr/lib/ssh/ssh-askpass
と/usr/lib/seahorse/ssh-askpass
ます)。 これらのパッケージの1つをインストールするだけで十分です。 VS Codeは、必要になるたびにパスワードダイアログを起動します。
以下のキーを環境に追加するだけです。
DISPLAY=needs-to-be-defined
SSH_ASKPASS=/mingw64/libexec/git-core/git-gui--askpass
私はこれが2020年1月のマイルストーンにあると誓ったかもしれません。 😕
これに追加するhttps://github.com/microsoft/vscode/issues/13680#issuecomment-559013132
それは、bashがパスフレーズを入力するたびにプロンプトを表示するため、bashを介してショートカットで実行中のVSCodeをチェーンできるということです。 アイコンには、VSCodeに付属しているものを使用してください。おそらく%LOCALAPPDATA%\ Programs \ Microsoft VSCodeCode.exeの下にあります。
すでにssh-agentを実行している場合、これによりコードがすぐに起動します。 そうでない場合は、パスフレーズを入力するのを待ちます。
私はこれを手伝いたいです。 これは、VSCodeに期待している数少ないことのひとつですが、それがなくても問題ありません。VSCodeの使用は本当に楽しいので、ありがとうございます。
Git-for-Windowsにはstart-ssh-agent
というスクリプトが付属していることをご存知ですか。この
プッシュ/プルボタンをクリックしたときに発生する一連のイベントを誰かが教えてくれるかどうか疑問に思っています。おそらくvscodeターミナルまたはポップアップで、このスクリプトを実行しようと試みることができます。
また、追加のプラスとして、ユーザーがすでにssh-agentを開始している場合、スクリプトは通常それを見つけ、既存のエージェントを使用するだけなので、パスフレーズも必要ありません。
ありがとう!
https://github.com/microsoft/vscode/issues/13680#issuecomment -525861890も機能しましたが、それほど単純ではなく、Git for Windowsgitおよびbashも使用している場合は複雑になります。
Windows + Git for Windows(GfW)+ VSCode + SSHgitリポジトリの主な問題は次のとおりです。
code
を実行する場合など)、VSCodeは取得されません。 GfWssh-agentへのアクセスも同様です。解決策2は素晴らしいですが、それほど簡単ではありません。これらは私が取った手順です。
ssh-add
を実行すると、キーが追加されていることがわかります。今のところ、私はソリューション1に固執しています。なぜなら、私はMacとLinuxシステムも使用していて、どこにでも同じbash / git / sshツールがあるのは素晴らしいことだからです。
cmdフォルダーにstart-ssh-agent.cmd
というGit-for-Windowsスクリプトをチェーンしてみましたが、ショートカットのCode.exe
は%COMSPEC% /C %LOCALAPPDATA%\Programs\Git\cmd\start-ssh-agent.cmd && "%LOCALAPPDATA%\Programs\Microsoft VS Code\Code.exe"
として機能しますが、この奇妙な側面があります。最初のインスタンスを終了した後にVSCodeの2番目のインスタンスを開くことの効果ですが、理由はわかりません。
この行をWindowsターミナルから実行すると(前の%COMSPEC% /C
有無にかかわらず)、問題なく動作します。
私が試したもう1つのことは、ショートカットと同じコマンドを使用して*.bat
または*.cmd
ファイルを作成することでしたが、それが機能しないことに驚きました。 VSCodeは起動しますが、プル/プッシュできず、恐ろしい「許可が拒否されました(公開鍵)」で応答します。 エラー。
また、 Git拡張コードベースを探すのにも時間を費やしましたが、ssh-start-agentスクリプトを挿入する場所がわかりませんでした。理想的には、Gitのバージョンを探していて、 61〜148行目などのWindows上にあることがgit --version
実行するため、 cp.exec('start-ssh-agent.cmd')
も実行できますが、ユーザーからパスフレーズを取得する方法が必要になります。
最後に、私が決めたのは、 start-ssh-agent.cmd
をvscode-ssh-agent.cmd
という新しいファイルにコピーし、 CMD
を呼び出す最後の行を<strong i="25">@call</strong> "%LOCALAPPDATA%\Programs\Microsoft VS Code\Code.exe"
置き換えること しかし、タスクバーに固定することはできません。
私は現在、この機能を実装しようとしています。 それはまだ進行中の作業ですが、私はすぐにPRを利用できるようにする必要があります。
今のところ、ssh-agentを起動し、git.sshPrivateKeyPathが設定されている場合はユーザーキーを追加し、要求された場合はユーザーにSSHキーのパスワードの入力を求め、すべてのgit呼び出しにエージェントの環境変数を使用します。
Windowsマシンでの最初のテストは機能しているようです。
ここですべてのコメントを読みましたが、何か忘れているかもしれませんので、お気軽にコメントしてください。
@weiliddatからhttps://github.com/microsoft/vscode/issues/13680#issuecomment-583599355に追加しContextEditを使用してコンテキストメニューエントリを編集したため、VSCodeはSSHコンテキストにアクセスできます。
"C:\Program Files\Git\bin\bash.exe" -l -c "code '%V';exit"
ます。 "C:\Program Files\Git\"
Git forWindowsのインストールディレクトリに対応していることを確認してください。 リセットする必要がある場合に備えて、古いコマンドをコピーすることをお勧めします。ここで、フォルダを右クリックして「VSCodeで開く」とすると、最初にGit Bashが起動し、その後、適切なフォルダでVSCodeを開きます。 あなたがしている場合、正しく起動するのGit Bashの前に、あなたのSSHエージェントを起動するためのGit Bashのを設定し、これはあなたのコンピュータを再起動するたびに一度パスフレーズを入力するプロンプトを表示しなければなりません。 その後開くと、VSCodeが直接開き、SSHキーがすべて設定されているはずです。
エクスプローラーでフォルダー内を右クリックすると、フォルダー自体を直接右クリックするのではなく、ContextEditエントリを見つけることができませんでした。
以下のキーを環境に追加するだけです。
DISPLAY=needs-to-be-defined SSH_ASKPASS=/mingw64/libexec/git-core/git-gui--askpass
以下のキーを環境に追加するだけです。
DISPLAY=needs-to-be-defined SSH_ASKPASS=/mingw64/libexec/git-core/git-gui--askpass
https://github.com/microsoft/vscode/issues/13680#issuecomment -575204695
これはそれを解決します! どうもありがとうございました!
このセクションを確認してください。 つまり、必要な環境変数を設定するには、 GitBash
などからVSCode
を開始する必要があるということです。 また、 GitBash
これらの変数をチェックした場合、次のようになる可能性があります。
。
たとえば、 GitBash
を使用して毎回VSCode
GitBash
を開始したくない場合(これはナンセンスです!IMHO )、 Environment Variables
ウィンドウまたはコマンドを使用してこれらを追加できrundll32.exe sysdm.cpl,EditEnvironmentVariables
(つまり、cmd.exeを介して)。
結果として、次のようになります。
ここで、 VSCode
を再起動する(リロードしない)だけで、機能するはずです。
DISPLAY=WTHeck
でも機能するので、この変数の存在のみを検索する可能性があります。
回避策として、これら( private key file path
またはSSH_ASKPASS
)をJSON
値として単純に定義しないのはなぜですか。したがって、 VSCode
は起動時にこれらを追加します。その内部環境変数?
私はelectronまたはwindowsアプリケーションがどのように機能するかについてはあまり詳しくありませんが、このソリューションのラッパーを開発して、VSCodeをインストールすると、これらの設定が自動構成されるようにすることは可能でしょうか。
TBHにとって、これを解決するのはそれほど難しい問題ではないように思われますが、この議論が4年間続いていることを考えると、おそらく問題の獣です。 ユーザーが独自の回避策を実行せずにこのかなり標準的なgit機能を使用できるように、VSCodeが少なくとも何かを実装するのを見るのは素晴らしいことです。 初めて正しく実装することでポイントがありますが。
回避策を提供してくれたsoufiene-slimiに感謝し、説明してくれたF8ERに感謝します。 UIの不整合はありますが、少なくとも機能します
以下のキーを環境に追加するだけです。
DISPLAY=needs-to-be-defined SSH_ASKPASS=/mingw64/libexec/git-core/git-gui--askpass
ここで何か新しいことはありますか? WSL2とGitでVSCodeを使い始めたところです。 また、VSCodeは何かをプッシュまたは公開しようとするたびにフリーズするため、ターミナルで試してみましたが、パスフレーズを入力する可能性があったため、うまく機能しました。
この問題はとても古く、コメントがたくさんあります。 キーからパスフレーズを削除せず、構成のどこかにキーを保存せずに、どこかでうまく回避できるかもしれません。
やあみんな、
Macでもこの問題が発生しました。
RSAキーを設定していて、設定は次のようになっています
# GitLab.com
Host gitlab.com
Preferredauthentications publickey
UseKeychain yes
AddKeysToAgent yes
IdentityFile ~/.ssh/id_rsa
CLIを使用してオリジンにプッシュすると、VSコードターミナルからパスワードの入力を求めるプロンプトが表示されてコードが正常にプッシュされます。
VScode GUIのプル/プッシュ/同期を使用すると、問題が発生します。
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.
唯一の違いは、GUIがパスワードの入力を求めないことです。そのため、失敗したと想定しています。
[email protected] :アクセスが拒否されました(公開鍵)。
..。
唯一の違いは、GUIがパスワードの入力を求めないことです。そのため、失敗したと想定しています。
このチェック@mohammedpatlaしてくださいこれを。
環境変数を使用したそのソリューションは役に立ちません。 Windowsにはgitをインストールしていませんが、WSL2で実行されているUbuntu20.04にインストールしています。 mingw64
という名前のディレクトリやgit-gui--askpass
という名前のバイナリはどこにもありません。
したがって、このソリューションはMacでも機能していないと思います。 @ F8ER 。
Mac @ F8ERでgit-bashを介してVScodeを実行できませ
環境変数を使用したそのソリューションは役に立ちません。 Windowsにはgitをインストールしていませんが、WSL2で実行されているUbuntu20.04にインストールしています。
mingw64
という名前のディレクトリやgit-gui--askpass
という名前のバイナリはどこにもありません。
Macでgit-bashを介してVScodeを実行できません
Environment Variable
とは何か知っていますか?
@ NicolasGoeddelubuntu.comからこのことをお勧めします。
@mohammedpatla代わりに、apple.comからこの勧めします。
また。 まずGoogleをお試しください。 たとえば、 git-gui--askpass
がない場合は、パッケージgit-gui
インストールされていないことを意味する可能性があるため、インストールが必要になる場合があります。
環境変数を使用したそのソリューションは役に立ちません。 Windowsにはgitをインストールしていませんが、WSL2で実行されているUbuntu20.04にインストールしています。
mingw64
という名前のディレクトリやgit-gui--askpass
という名前のバイナリはどこにもありません。Macでgit-bashを介してVScodeを実行できません
Environment Variable
とは何か知っていますか?
@ NicolasGoeddelubuntu.comからこのことをお勧めします。
@mohammedpatla代わりに、apple.comからこの勧めします。また。 まずGoogleをお試しください。 たとえば、
git-gui--askpas
がない場合は、パッケージgit-gui
インストールされていないことを意味します。
もちろん、私は環境変数が何であるかを知っています。 しかし、そのGUIを実行できないのに、なぜWSL2で実行されているLinuxマシンにGUIアプリケーションをインストールする必要があるのでしょうか。 ヘッドレスマシンでは不可能です。 次回は私の投稿をもっと注意深く読んでください。
そのgit-gui
トリックは、私のシナリオでは適切な回避策ではありません。 ただし、VSCodeとリポジトリが同じ環境でネイティブに実行されている場合は、Macでも機能する可能性があります。 次に、 @ mohammedpatlaは自分のシステムにgit-gui
をインストールするだけでよく、環境変数を変更する必要があります。
もちろん、私は環境変数が何であるかを知っています。 しかし、そのGUIを実行できないのに、なぜWSL2で実行されているLinuxマシンにGUIアプリケーションをインストールする必要があるのでしょうか。 ヘッドレスマシンでは不可能です。
そのgit-gui
トリックは、私のシナリオでは適切な回避策ではありません。
なぜGUI以外のマシンでVSCodeを実行しようとしているのですか、それとも何かが足りないのですか?
また、これをチェックしてみてください。
Macでは、vscodeをどのように起動しても問題なく動作しますが、ssh-agentを有効にして、資格情報キーチェーンに接続しているため、自動的に起動します。
WSLからプル/プッシュしようとしたことはありませんが、ワクチンのリモート接続を使用しています。 VcXsrvを使用してWSLからガイアプリケーションを実行することはできますが、それは関係ありません。
ssh-agentはWSLで開始されていますか? WSLターミナルを起動し、 .bashrc
または.bash_prifile
(ホームフォルダーに存在する場合)を確認します。 それから加えて:
eval `ssh-agent`
ssh-add
多分それは役立つでしょうが多分そうではありません。 wslを使用していると、うまくいかないことがいくつかあります。 ターミナルを開いたままにして、取得したリポジトリを手動で同期します
これは行き過ぎだと思いますね。 すでに回避策があります。 適切な解決策は、通常のユーザー名/パスの場合と同じ方法で、VSCodeがパスワードの入力をネイティブに要求することです。
/ cc @ alarr46 、あなたは何と言いますか?
もちろん、私は環境変数が何であるかを知っています。 しかし、そのGUIを実行できないのに、なぜWSL2で実行されているLinuxマシンにGUIアプリケーションをインストールする必要があるのでしょうか。 ヘッドレスマシンでは不可能です。
そのgit-gui
トリックは、私のシナリオでは適切な回避策ではありません。なぜGUI以外のマシンでVSCodeを実行しようとしているのですか、それとも何かが足りないのですか?
また、これをチェックしてみてください。
あなたは私を誤解しました。 VSCodeはWindowsで実行されており、私が開発したアプリケーションとそのソースはWSL2で実行されています。
しかし、あなたのリンクに感謝します。 WindowsとWSLの間でGit資格情報を共有することについて知りませんでした。 それをテストします。
一方、 @ ranolfiは正しいです。 これはすべてまだ回避策です。 その問題全体を修正したほうがよいでしょう。 :-)
はい、これをVSCodeにもネイティブに実装したいと思います。 プロンプトをいただければ幸いです。
以下のキーを環境に追加するだけです。
DISPLAY=needs-to-be-defined SSH_ASKPASS=/mingw64/libexec/git-core/git-gui--askpass
二重ダッシュの前にスペースがあるべきかどうかを自問する前に、あるべきではありません。 パラメータのように見えますが、実際にはファイル名だと思います...スペースがありません
以下のキーを環境に追加するだけです。
DISPLAY=needs-to-be-defined SSH_ASKPASS=/mingw64/libexec/git-core/git-gui--askpass
二重ダッシュの前にスペースがあるべきかどうかを自問する前に、あるべきではありません。 パラメータのように見えますが、実際にはファイル名だと思います...スペースがありません
これは行き過ぎだと思いますね。 すでに回避策があります。 適切な解決策は、通常のユーザー名/パスの場合と同じ方法で、VSCodeがパスワードの入力をネイティブに要求することです。
/ cc @ alarr46 、あなたは何と言いますか?
公式リリースを待つだけで、それまではGit-CLIを使用するだけです。
これは行き過ぎだと思いますね。 すでに回避策があります。 適切な解決策は、通常のユーザー名/パスの場合と同じ方法で、VSCodeがパスワードの入力をネイティブに要求することです。
/ cc @ alarr46 、あなたは何と言いますか?
私は同意します、それは私がこのプルリクエストで実装したものです。 ただし、まだレビューする必要があります。
私は同意します、それは私がこのプルリクエストで実装したものです。 ただし、まだレビューする必要があります。
しかし、非常に良いスタートです。 どうもありがとうございました! ロケット。
最も参考になるコメント
Windows 10の回避策:
git config --global core.sshCommand "C:/Windows/System32/OpenSSH/ssh.exe"
タスクマネージャの[サービス]タブを開き、[サービスを開く]をクリックします。
OpenSSH認証エージェントを見つけ、プロパティを開き、[スタートアップの種類]を[自動]に設定して、[OK]をクリックします。
また、サービスを開始するか、コンピューターを再起動します。
ssh-add
ssh-keygenがキーを作成する場所であるC:\ Users \%USERNAME%\。sshに保存されているキーを自動的に取得する必要があります。
プロンプトでパスワードを入力します。
注:Git for Windowsをインストールするときに、bashコマンドをPATHに追加するオプションを選択した場合、ssh-addコマンドが間違った実行可能ファイルを指す可能性があります。 その場合は、付属のキーを手動で実行して、キーをエージェントに追加できます。
C:\Windows\System32\OpenSSH\ssh-add.exe
これで、組み込みのOpenSSH認証エージェントは、パスワードで保護されたキーのロックが解除された状態で起動時に実行され、Gitは独自の代わりにWindowsOpenSSHを使用します。 したがって、毎回パスワードを入力する必要はなく、sshエージェントを手動で起動する必要も、コマンドラインからVSCodeを起動する必要もありません。