ロリ川の部屋

幼女化おりばぶろぐ

VS Codeで学校鯖のファイルをリモートで編集! - for 熊●高専生

重要:改訂版を新ブログの方で投稿しました

今後はこちらの記事を参照してもらえるとたすかります

blog.loliver.net


はじめに

これは弊高専の学生であり「VS Codeで学校鯖に接続してぷよぐやみんぐしたい!」という人に向けた記事です。

対象の読者

  • Teraterm使うのなんかいや」「Vimもあまりすきじゃない」という人
  • 「授業でVS Code使ってイキりてぇ!」という人

前提

VS Codeのダウンロードはここ
OpenSSHはWindows 10 Fall Creator Updateから標準で同梱されているようです。

早速設定をば

1. 拡張機能"SSH FS"をインストール

f:id:Loliver:20190521195952p:plain "ssh"で検索すると一番上に出てくるはず

インストールが終わると、下の画像のようにエクスプローラーに"SSH FILE SYSTEM"という項目が追加されたかと思います f:id:Loliver:20190521200838j:plain これでSSH FSのインストールは完了です

2. configファイルに設定を書き込み

次に、接続先とログインユーザの情報を設定に書き込みます

"SSH FILE SYSTEM"の枠内で右クリックをし、"Create a SSH FS configuration"をクリックしてください f:id:Loliver:20190521201328p:plain

すると、"SSH-FS Settings"というタブが表示されると思います
そのタブ内の"Name"の項目に、接続先の名前を入力します(自由でいいです) f:id:Loliver:20190521202147p:plain 私の場合はHI科の鯖に接続するので"hi_server"という名前にしました

名前を決めたら"Save"を押します
すると、各種細かい設定項目と、サイドバーの"SSH FILE SYSTEM"にいま作成した接続先の名前が表示されたと思います

あとは設定に必要事項をいくつか入力するだけです
以下に必須入力箇所を書いときます

項目名
Host 接続先のアドレス
Port HI科は4桁のやつ。TEはしらん
Root 自分のホームディレクトリの絶対パスpwdコマンドで確認可能)*
Username e.g.) hi17hogehoge
Password パスワード認証方式の場合※
Private key Private keyの絶対パス(公開鍵認証方式の場合)
Passphrase Private keyのパスフレーズ(公開鍵認証方式の場合)

*Rootは"/home/student/20XX/ユーザ名"という感じになるはず

※Password, Passphraseには直接パスを書いてもいいがセキュリティ上よろしくないので非推奨
接続する度にパスを入力する形にする場合は"<Prompt>"と入力しておく(恐らく入力するとき候補として出てくる)(version1.26までは"true"でいけてた)

3. saveして早速接続してみよう!

一番下にある"Save"を押して!さぁ!新しい時代の幕開けだ!

接続するときは"SSH FILE SYSTEM"内にある接続先を右クリックし"Connect as Workspace folder"をクリック!
(接続を切るときは、接続するときと同じ要領で"Disconnect Workspace folder"をクリックするだけでいいです)

公開鍵暗号方式を使ってみよう!

公開鍵暗号方式について

Qiitaとかでいろいろ記事読むのが一番かと思います(というか自分で説明するための材料つくるのが面倒)

まあ簡潔に説明すると、

  1. 予め秘密鍵をクライアント側に、公開鍵をサーバ側へ置いておく
  2. 接続するとき、クライアント側のユーザが自身の秘密鍵を使って暗号化された署名を作成する
  3. その署名をサーバ側が公開鍵を使って検証(公開鍵で正しく復号)できれば、その秘密鍵の持ち主は正当なユーザだとジャッジできる

ってな感じ

詳しくはSSHの公開鍵認証における良くある誤解の話 - Qiita とかを読んで

パスワード認証方式だと、そのパスワードがバレてしまったらはい人生オワオワリって感じだけど、 公開鍵暗号方式の場合は公開鍵がバレてもだいじょうぶ。
秘密鍵がバレたらやばいけどそもそも流出することがない。なぜなら秘密鍵は作られたPCから外に出す必要がない、認証するときも秘密鍵そのものは送らないから。

鍵のつくり方

クライアント側のターミナルで$ ssh-keygen -t rsa -b 4096をッターーーーン!
おそらくここで鍵を置く場所とパスワードを聞かれる
場所は適宜、パスワードは別になくてもいいけどセキュリティ上設定しておくことを推奨
(パスワード設定するとちょっと面倒だわ)

するとid_rsa(秘密鍵)とid_rsa.pub(公開鍵)の2つのファイルが作られたかと思います
あとは何らかの方法で公開鍵(id_rsa.pub)をサーバ側に送ります
自身のホームディレクトリ下の.ssh/にauthorized_keysという名前のファイルを作成して公開鍵の中身をコピペ

もしこれで接続できなかった場合は

$ chmod 600 authorized_keys  
$ chmod 700 ~/.ssh

というコマンドを打ちましょう

参考になるページ: Visual Studio Code Remote Development Troubleshooting Tips and Tricks

ssh-agent

これは鍵を作るときにパスワードを設定した人向け
設定しなくていいよ

「サービス」ってアプリを検索(もしくはスタート>Windows管理ツール>)実行して下の画像の通り"OpenSSH Authentication Agent"ってサービスの状態を「実行中」、スタートアップの種類を「自動」にしておく。 f:id:Loliver:20190619220656p:plain

あとは忘れた
確か$ ssh-addとかなんかコマンド打つ
なんか鍵のパスワード聞かれたらパスワード打ってそしたら終わり(多分)

きっといつかちゃんと書く

ssh_config

これ読んで
.ssh/configファイルでSSH接続を管理する - Qiita

詳しい設定項目とかはこっちに載ってる
ssh_config(5) manページ

おわりに

これでVS CodeSSHごしにファイル弄れてターミナルでコマンド実行まで簡単にできるようになりました僕はこの記事書いてつかれました今日は水泳のあと実験とかいう地獄だったのでさっさと寝ますお疲れ様でした。

不明な点などありましたら気軽にメンションアタックOKです