tag:crieit.net,2005:https://crieit.net/boards/mogya-vsremote/feed 「VSCode Remote Development」の投稿 - Crieit Crieitで「VSCode Remote Development」ボードに投稿された最近の投稿 2019-09-13T10:54:27+09:00 https://crieit.net/boards/mogya-vsremote/feed tag:crieit.net,2005:PublicArticle/Windows-VSCode-ssh-agent 2019-09-13T10:54:27+09:00 2019-09-13T10:54:27+09:00 https://crieit.net/boards/mogya-vsremote/Windows-VSCode-ssh-agent [Windows] VSCode で使うssh-agentについて <p>sshでログインしたリモートlinuxマシンからgithubアクセスしようと思うと、githubに登録した秘密鍵が必要なんだけど、秘密鍵を複数のマシン上においておきたくはないよね。</p> <p>なので、ssh-agentというのを使って、自分のPC上にある秘密鍵を登録しておけば、リモートマシン内に鍵がなくてもgithubアクセスができる、というのが一般的なssh-agentの説明。</p> <p>じゃあそれをWindowsでやろうとするとどうなんの?特に、VSCodeでremote developmentを使ってリモートにログインしているとき、ちょとgit clone したかったり、コミットしたけどgit pushだけWSL立ち上げないとできないみたいな悲しい状態はさけたい。</p> <h1>OpenSSH for Windows</h1> <p>いにしえの昔には、フリーソフトでPuttyというのがあってこれでssh-agentが実現されていたりしたのだけれど、2019年の世界では、OpenSSH for Windowsを使う。<a target="_blank" rel="nofollow noopener" href="https://docs.microsoft.com/en-us/windows-server/administration/openssh/openssh_install_firstuse">インストール手順</a></p> <p>で、このドキュメントの続きにある<a target="_blank" rel="nofollow noopener" href="https://docs.microsoft.com/en-us/windows-server/administration/openssh/openssh_keymanagement">OpenSSH Key Management</a>を読むと、こんな感じで、powershell上でssh-agent(を含むssh-utils)をインストールすることになっている</p> <pre><code class="powershell"># Install the OpenSSHUtils module to the server. This will be valuable when deploying user keys. Install-Module -Force OpenSSHUtils -Scope AllUsers # Start the ssh-agent service to preserve the server keys Start-Service ssh-agent # Now start the sshd service Start-Service sshd </code></pre> <p>でもこれ残念ながらぼくの環境ではうまく入らなかった</p> <p><a href="https://crieit.now.sh/upload_images/9d08c6d37e5274805ec35413f543d5ed5d7af3d2d9754.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/9d08c6d37e5274805ec35413f543d5ed5d7af3d2d9754.png?mw=700" alt="image.png" /></a></p> <p>のだけど、そもそもWindows10にssh-agentが含まれているぽくて(?)、コントロールパネルから有効化したら普通に使えるようになった</p> <p><a href="https://crieit.now.sh/upload_images/9d08c6d37e5274805ec35413f543d5ed5d7af4745296c.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/9d08c6d37e5274805ec35413f543d5ed5d7af4745296c.png?mw=700" alt="image.png" /></a><br /> <a href="https://crieit.now.sh/upload_images/9d08c6d37e5274805ec35413f543d5ed5d7af48659e55.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/9d08c6d37e5274805ec35413f543d5ed5d7af48659e55.png?mw=700" alt="image.png" /></a></p> <p>んでpowershellから公開鍵を登録する</p> <pre><code>PS C:\Users\mogya> ssh-add C:\Users\mogya\.ssh\id_ed25519 Identity added: C:\Users\mogya\.ssh\id_ed25519 ([email protected]) </code></pre> <p>すると、VSCode Remote developmentのコンソール上でもssh-agentが効いた状態でsshアクセスができるようになる</p> <pre><code>daisuke@linode17:~/develop$ ssh -T [email protected] Hi mogya! You've successfully authenticated, but GitHub does not provide shell access. </code></pre> daisuke furukawa tag:crieit.net,2005:PublicArticle/windows-remote-development-ssh 2019-09-12T21:38:05+09:00 2019-09-12T21:40:59+09:00 https://crieit.net/boards/mogya-vsremote/windows-remote-development-ssh [windows] remote developmentで使われるsshについて <p>VSCodeでremote developmentを使う場合、sshでターゲットマシンにログインして各種コマンドが実行される。ところでWindowsの場合、sshって一体何が使われるの?</p> <p>答え:パスの通ったところにあるsshコマンド</p> <p>MicrosoftのおすすめはOpenSSH on Windows(<a target="_blank" rel="nofollow noopener" href="https://code.visualstudio.com/docs/remote/troubleshooting#_installing-a-supported-ssh-client">Installing a supported SSH client</a>)。</p> <p>なお、このコマンドはいわゆるcmd.exe上で実行されるらしく、wslのubuntu linuxでapt install openssh-clientとかしても、そっちが使われることはない。</p> <h1>気になること:サポートしてる鍵の種類が怪しい</h1> <p>Openssh for windowsは<a target="_blank" rel="nofollow noopener" href="https://websiteforstudents.com/enable-windows-10-built-in-ssh-client-server/">ed25519しかサポートしていない</a>と言っている人がいる</p> <p>(ed25519は、みんな使ってるrsa暗号より二世代くらい新しい最新の暗号方式)</p> <p>2019年現在、新規に立てたサーバやちゃんと更新されているシステムはだいたい受け入れてくれるとは思うけど、それしかサポートしないってことはないでしょ...</p> <p>実際、rsa鍵を使ってcentOS7にはログインできた。ところが、ubuntu19だと、同じrsa鍵を使ってログインすることができなくて、ed25519で鍵を作り直したらログインできるようになった。<br /> <a target="_blank" rel="nofollow noopener" href="https://ja.poderosa-terminal.com/">Poderosa</a>を使うとrsa鍵でもログインできるので、どうもopenssh for windowsとrsa鍵の組み合わせがなんか怪しい..</p> <p>※ でも時間ないのでこれ以上は検証しない予定</p> daisuke furukawa tag:crieit.net,2005:PublicArticle/github 2019-06-16T22:13:22+09:00 2019-09-13T10:55:19+09:00 https://crieit.net/boards/mogya-vsremote/github 踏み台経由githubアクセス <p>今の構成</p> <p>Windows - gateway - target</p> <ul> <li>targetは、gateway経由でのみSSHアクセス可能(gatewayを落としておけばtargetには誰もログインできなくて安全)</li> <li>秘密鍵はWindowsPC上にのみ持つ。gatewayやtarget上には置かない(安全!)</li> <li>ssh-agentを使えば、target上からgithubアクセスもできるはず</li> </ul> <p>できた。ポイント</p> <ul> <li>ssh-agentの起動が必要(windows ssh-agentでググればいっぱい出てくる)</li> <li>WindowsPCの.ssh/config で、ForwardAgent yes の設定が必要</li> <li>gatewayにはいらないぽい</li> <li>targetマシンで、下記の設定が必要(IdentityFileはいらないのだけど、Userとかがいる)</li> </ul> <pre><code>Host github.com HostName github.com User git </code></pre> <p>これで、PowerShellやWSL経由だと ssh -T github.com できるのだが、VSCode経由の場合だけ成功しない。なーぜーだー。</p> <p>2019/09/13追記 : VSCodeでもssh-agentする方法がわかった https://crieit.net/boards/mogya-vsremote/Windows-VSCode-ssh-agent</p> daisuke furukawa