Help us understand the problem. What is going on with this article?

Windows10でvscodeからSSHできるようになるまで

More than 1 year has passed since last update.

はじめに

VSCodeにはRemote Developmentという拡張があります。まだPreview版ですが、出てからそこそこ経ったので試してみました。

結論

おそらくssh-agentのからみから、msys2のsshを使うのはうまく行かず、Windows10標準搭載のsshを使うことになります。

前提

msys2から普通に目的のサーバーにコマンドラインでsshできる状態。もちろんパスワード認証なんかじゃなくて公開鍵認証で。~/.ssh/configには

~/.ssh/config
Host irregular-at-tus.work
    IdentityFile ~/key_webarena/key_webarena
    Port 110
    User yumetodo

のようにある。つまり

├─.ssh
│  ├─config
│  └─known_hosts
├─key_webarena
│  ├─key_webarena
│  └─key_webarena.pub

のようなdirectory構成。

この記事でのSSH先はWebARENAのVPSで動いているUbuntu 18.04 Server。

Windowsでsshするのにmsys2ないしgit-bash使ってないとか有りえんので、この段階に至ってない場合は多分この拡張にお世話になることはないはず。

remoteは今の所glibcベースで動いているx86_64なLinux環境のみ対応。

Windows10標準搭載のsshとmsys2のpacmanで落とせるsshで設定を共有しつつsshできるように

シンボリックリンクを貼る

まずは~/.ssh/configおよび設定で参照している認証鍵にシンボリックリンクを貼ります。

コマンドプロンプトを立ち上げ以下のように。ユーザー名は適宜読み替えてください。

C:\Users\yumetodo>mklink /D .ssh "C:\msys64\home\yumetodo\.ssh"
.ssh <<===>> C:\msys64\home\yumetodo\.ssh のシンボリック リンクが作成されました
C:\Users\yumetodo>mklink /D key_webarena "C:\msys64\home\yumetodo\key_webarena"
key_webarena <<===>> C:\msys64\home\yumetodo\key_webarena のシンボリック リンクが作成されました
C:\Users\yumetodo>dir | findstr SY
2017/11/17  13:03    <SYMLINKD>     .gnupg [C:\msys64\home\yumetodo\.gnupg]
2019/08/05  20:46    <SYMLINKD>     .ssh [C:\msys64\home\yumetodo\.ssh]
2019/08/01  01:01    <SYMLINKD>     key_webarena [C:\msys64\home\yumetodo\key_webarena]

.gnupgは別件なので気になさらずに・・・。

鍵のあるdirectoryの権限設定

~/.ssh/configIdentityFileで指定した鍵ファイルがあるdirectoryをWindowsのエクスプローラーからたどり、プロパティ→セキュリティで以下の画面が開きます。

image.png

さらに詳細設定を押すと以下の画面が開きます。

ここで継承の無効化を押します。

image.png

確認画面がでるので変換します。

image.png

すると編集ができるようになるので、「Users」と「Authenticated Users」を削除します。

image.png

追加を押します。

image.png

プリンシパルの選択を押します。

image.png

自分のWindowsログインユーザー名を入れて、「名前の確認」を押します。

image.png

サジェストされるのでOKで閉じます。

image.png

「フルコントロール」にチェックを付けてOKします。

image.png

最終的にこんな感じになっているはず・・・。

image.png

OKで閉じます。

~/.ssh/configの権限設定

~/.ssh/configをWindowsのExplorerからたどってプロパティを開いて先ほどと同様に設定してきます。ただし以下の画面で「フルコントロール」ではなく「変更」に。

image.png

ssh-agentの有効化

他にもやり方はあるのですがコマンドラインからやるなら、管理者権限のPowerShellを立ち上げて

Set-Service ssh-agent -StartupType Automatic
Start-Service ssh-agent
Get-Service ssh-agent

とすればいいです。GUIからやるならServiceで検索して

image.png

OpenSSH Authentication Agentを探して

image.png

スタートアップの種類を「自動」もしくは「自動(遅延起動)」にすればいいです。

image.png

ssh-add

C:\Users\yumetodo>ssh-add C:\msys64\home\yumetodo\key_webarena\key_webarena
Enter passphrase for C:\msys64\home\yumetodo\key_webarena\key_webarena:
Identity added: C:\msys64\home\yumetodo\key_webarena\key_webarena (yume-wikijp@live.jp)
C:\Users\yumetodo>ssh-add -l
4096 SHA256:P81NFT/HJeeQk1jXGzZeZ4cQ/XGLDKnDbgxHmFMhDgU yume-wikijp@live.jp (RSA)

ssh

C:\Users\yumetodo>ssh irregular-at-tus.work
warning: agent returned different signature type ssh-rsa (expected rsa-sha2-512)
Welcome to Ubuntu 18.04.2 LTS (GNU/Linux 4.15.0-55-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage
Welcome to Ubuntu 18.04.2 LTS (GNU/Linux 4.15.0-55-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

  System information as of Mon Aug  5 20:50:22 JST 2019

  System load:  0.0                Processes:           130
  Usage of /:   46.4% of 19.56GB   Users logged in:     0
  Memory usage: 36%                IP address for ens3: 140.227.235.169
  Swap usage:   6%

 * MicroK8s 1.15 is out! Thanks to all 40 contributors, you get the latest
   greatest upstream Kubernetes in a single package.

     https://github.com/ubuntu/microk8s

 * Canonical Livepatch is available for installation.
   - Reduce system reboots and improve kernel security. Activate at:
     https://ubuntu.com/livepatch

5 packages can be updated.
2 updates are security updates.


Last login: Mon Aug  5 20:32:52 2019 from 119.173.37.16
Agent pid 26403

yumetodo@btgf1b8n ~

vscodeでSSHできるまで

拡張の導入

Remote Development

を入れます。

設定は特に弄ることはないです。

接続

Ctrl+Shift+ Pでコマンドパレットを開いて、Remote-SSH: Connect to Hostを選びます。

image.png

~/.ssh/configに書いたHostが列挙されます。接続したい先を選びます。

image.png

接続中・・・

image.png

うまくいけばActivating Extensions...と下に出てきます。それが終われば使えます。

image.png

試しに適当なDirectoryを開いてみる

ファイラータブを開くとOpen Folderというボタンが見えます。

image.png

押すと現在(HOME directory)のリストが出てきます。試しに @Gaccho さんの DungeonTemplateLibraryをたまたまCloneしてあったのでこれを開いてみます(謎の宣伝)。

カーソルを合わしてOKを2回押します。

image.png

開けました。

image.png

端末を開いてみる

Ctrl+Shift+ @でとくに何も苦戦せずに端末が立ち上がって普通に使える。

image.png

次のステップ

Visual Studio Code Remote Development Troubleshooting Tips and Tricks

SSH Architecture

にも載っているように、サーバー側に入れないと動かない拡張もある。多分CMakeもそうだと思われる。そのへんを調整する必要がありそう。

全部のremoteに対して入れたい拡張を指定するには"remote.SSH.defaultExtensions"があるらしい。

参照

yumetodo
ありきたりなC++erです。最近C++書いていません(あれっ
http://yumetodo.hateblo.jp/
qiitadon
Qiitadon(β)から生まれた Qiita ユーザー・コミュニティです。
https://qiitadon.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away