VS CodeのRemote SSHを使うと、スパコンや研究室のワークステーション上にあるファイルを、手元のPC上にあるファイルとだいたい同じように開いて編集できます。
ターミナルもサーバー上で開くので、ファイルを編集して、コマンドを実行して、結果を確認するところまでVS Code内で完結します。
サーバ上のファイルの手元に持ってくることも、手元のファイルをアップロードするのも直感的にできます。
とても便利なのですが、特にWindowsではSSHの鍵やconfigファイルがどこにあるのかわからなくなりがちです。
普段WSLで作業している場合、Windows側とWSL側にそれぞれ.sshディレクトリがあるので、片方では接続できるのにVS Codeからは接続できない、ということがよくあります。
この記事では、その辺も含めてVS code自体も使っていないビギナー向けに書きます。
Google Antigravityなど、VS Code系のエディタでも似た方でSSH設定を使える場合があります。
VS CodeとRemote-SSHを入れる
まず、VS Codeをインストール。https://code.visualstudio.com/Download
VS Codeを開いたら、色々でてくる設定を済ませます。このあたりの設定は後でいくらでも変更できるのでテキトウにポチポチやっても大丈夫です。
左側にある拡張機能のアイコン
をクリックします。
検索欄に、
Remote - SSHと入力し、Microsoftが提供しているRemote – SSHをインストールします。
似た名前の拡張機能が出てくる場合があるので、提供元がMicrosoftになっていることを確認してください。
普段のターミナルからSSH接続する方法を確認する
VS Codeから接続する前に、まず普段使っているターミナルからサーバーへSSH接続してる方法を確認します。
MacやLinuxでは、普段使っているターミナルを開きます。
Windowsの場合は、PowerShell、コマンドプロンプト、Windows Terminal、WSLのUbuntuなど、普段SSH接続に使っているものを開きます。
ややこいので、以下のどのパターンかをちゃんと確認してください。
ssh アカウント名@example.server.ac.jpと入力してる場合、ここで聞かれるものには2種類あります。
Password: サーバーのアカウントのパスワードなので→次の章にスキップ
Passphrase: 秘密鍵に設定した合言葉です。これはサーバーのパスワードじゃないので→公開鍵認証でログインしてるはず
何も聞かれずにログインできる場合: 公開鍵認証が設定済みで、さらにssh-agentなどが鍵を覚えている可能性がある→公開鍵認証でログインしてるはず
ssh -i ~/.ssh/秘密鍵ファイル アカウント名@example.server.ac.jpと入力してる場合→公開鍵認証でログインしてるはず
公開鍵認証でログインしている場合
特に、スパコンの利用開始時に一度だけ鍵を作成し、~/.ssh/config ファイルも設定している場合、その後は短いSSHコマンドだけで接続できるので、鍵を使っていることを忘れがちです。
自覚ない人は~/.ssh/configを開いてみて以下のような記述があれば、~/.ssh/id_ed25519 みたいなのが秘密鍵ファイルです。
Host myserver
HostName example.server.ac.jp
User アカウント名
IdentityFile ~/.ssh/秘密鍵ファイルまた、秘密鍵の名前がid_ed25519やid_rsaなどの標準的な名前になっている場合、IdentityFileを書いていなくても、SSHが自動的に~/.sshの中の鍵を探して使うことがあります。
どの鍵を使っているかわからない場合は、ssh -v 接続先で確認できます。Offering public key: の後ろに出てくるファイルが、SSHがつかってる秘密鍵です。
実際は~/.ssh/id_ed25519 というファイルそのものだけでなく、~/.ssh/id_ed25519(秘密鍵)と ~/.ssh/id_ed25519.pub(公開鍵)がセットであるはずです。
VS Codeからサーバーに接続する
VS Code左下にあるRemoteのアイコン
をクリックします。
表示されたメニューから、
Connect to Host...
を選びます。
すでにSSHのconfigファイルを設定している場合は、接続先の名前が一覧に表示されます。
まだ設定していない場合は、
Add New SSH Host...
を選びます。
普段ターミナルで使っているSSHコマンドを入力します。
ssh アカウント名@example.server.ac.jpや
ssh -i ~/.ssh/秘密鍵ファイル アカウント名@example.server.ac.jpSSHの設定を保存するファイルを聞かれたら、通常はユーザーのホームディレクトリにあるconfig(C:\Users\user\ssh\configとか)を選びます。
このconfigファイルを後で編集するので、覚えておいてください。
設定後、もう一度左下のRemoteアイコンから、Connect to Host... を選ぶと、追加した接続先が表示されます。
接続先をクリックすると、新しいVS Codeのウィンドウが開きます。
初回接続時には、接続先のOSを聞かれることがあります。スパコンや研究室のワークステーションであれば、多くの場合はLinuxです。
PasswordやPassphraseを設定している場合は、入力を求められます。
接続に成功すると、VS Code左下に接続先の名前が表示されます。
(ここうまく行かなくてもconfigをちゃんと設定すれば大抵つながるのでまだ諦めないで→こっち。
特に、普段WindowsでWSLのターミナルから接続している場合はここで失敗すること多いので次を読んでください。)
SSHのconfigファイルを編集する
うまく接続できない場合や、入力を端折りたい場合などはconfigファイルを編集しましょう。
まずVS Codeでコマンドパレットを開きます。
Windows・Linuxでは Ctrl + Shift + P、Macでは Command + Shift + P を押してください。
コマンドパレット(上に出てくる検索欄みたいな場所)に
Remote-SSH: Open SSH Configuration File...と入力し、表示されたファイル一覧の内、さっきSSHの設定を保存したファイルを選択します。
するとconfigファイルが開かれるので、例えば以下のように編集します。
# myserver は好きな名前でよい
Host myserver
HostName example.server.ac.jp
User アカウント名
IdentityFile C:/Users/user/.ssh/id_ed25519 ※ Windowsでも、SSH configの中では C:/Users/user/.ssh/id_ed25519 のように / で書くとトラブルが少ない。
WindowsのWSLでSSH接続していた場合
鍵(IdentityFile)が置いてある場所がWSLの仮想homeの下にある場合がほとんどだと思います(/home/user/.ssh)。
この場合、VS code側からはこのファイルが見れないし、そのパスも通用しないので、
鍵自体をコピーして、configファイルが置かれている場所(C:/Users/user/.ssh/)にコピーしましょう。
WSL側から以下でコピーできます。
mkdir -p /mnt/c/Users/user/.ssh
cp /home/user/.ssh/id_ed25519 /mnt/c/Users/user/.ssh/
cp /home/user/.ssh/id_ed25519.pub /mnt/c/Users/user/.ssh/つながったらまずはフォルダをつなげてみよう
左のエクスプローラーボタン
をクリックして、Open Folderをクリックすると、
サーバーのパスが表示されるので、好きなフォルダを選んだり作成する。
すると普段のファインダーやエクスプローラーみたいにフォルダの中身が一覧できるようになります。
ここでスクリプトやPNGをクリックすれば、そのまま中身を見れます。
手元のPC側にダウンロードしたければファイルを右クリックすればできるし、
手元のファイルをそのままドラッグアンドドロップすればアップロードできます。
拡張機能
でいろんな機能が提供されてるのでうまく使えば、PDFもそのまま開けるし、エクセル用の表ビューもできます
基本的なことですが(私は昔無頓着だったことを反省しています)、
こういうエディターはプロジェクトごとにフォルダをきちんと分けて、その中で完結する形にしたほうがいいです。
以下のような形にすれば、各projectのフォルダをVScodeで開けば
├── project1
│ ├── data
│ └── script
└── project2
├── data
└── script遺伝研スパコンのa001へVS Codeから直接接続する
遺伝研スパコンでは、通常はまずゲートウェイノードに接続し、その後で、
ssh a001を実行してインタラクティブノードへ移動します。
VS CodeのRemote SSHから使う場合は、ProxyJumpを設定して、手元のPCからa001へ直接接続できるようにします。最終的なconfigは、次のようになります。
Host nigsc-gw
HostName gw.ddbj.nig.ac.jp
User アカウント名
IdentityFile ~/.ssh/id_ed25519_nigsc-gw
IdentitiesOnly yes
Host nigsc-a001
HostName a001
User アカウント名
IdentityFile ~/.ssh/id_ed25519_nigsc-gw_a001
IdentitiesOnly yes
ProxyJump nigsc-gw以下、この設定を作ります。
1. まずゲートウェイノードへ接続できることを確認する
ターミナルを開き、普段使っている方法でゲートウェイノードへ接続できることを確認します。
例えば、ユーザー名を指定して接続している場合は次のようになります。
ssh アカウント名@gw.ddbj.nig.ac.jp秘密鍵を明示的に指定して接続している場合は、普段使っているコマンドをそのまま実行してください。
ssh -i ~/.ssh/秘密鍵ファイル アカウント名@gw.ddbj.nig.ac.jpまた、前の章で説明したように、~/.ssh/configに設定を書いている場合は、その接続先の設定を確認してください。特にIdentityFileに指定されているファイルが、実際に使用される秘密鍵です。
2. a001接続用の鍵を手元のPCに作る
ProxyJumpを使ってa001へ直接接続する場合、a001に接続するための秘密鍵も手元のPCに必要です。
ターミナルで、次のコマンドを実行します。
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_nigsc-gw_a001鍵のパスフレーズを設定するか聞かれます。
設定してもよいですが、空欄のままEnterを押すこともできます。
実行後、.sshディレクトリに次の2ファイルが作られます。
~/.ssh/id_ed25519_nigsc-gw_a001
~/.ssh/id_ed25519_nigsc-gw_a001.pub拡張子がない方が秘密鍵です。秘密鍵は人に渡しちゃだめ。
3. 公開鍵をa001へ登録する
まず、ゲートウェイノードへ接続します。
ssh nigsc-gw次に、ゲートウェイノードからa001へ接続します。
ssh a001a001へ入ったら、~/.sshディレクトリがあることを確認します。
mkdir -p ~/.ssh
chmod 700 ~/.ssh次に、手元のPCで作成した公開鍵、
id_ed25519_nigsc-gw_a001.pubの中身を表示します。
cat ~/.ssh/id_ed25519_nigsc-gw_a001.pub表示された1行をすべてコピーしてください。
a001側で、公開鍵をauthorized_keysに追記します。
vim ~/.ssh/authorized_keysファイルの末尾に、コピーした公開鍵を1行で貼り付けて保存します。
保存後、権限を設定します。
chmod 600 ~/.ssh/authorized_keys4. configに設定を書く
VS Codeでコマンドパレットを開きます。Ctrl + Shift + P か Command + Shift + P
次のコマンドを選びます。
Remote-SSH: Open SSH Configuration File...自分が普段使っているSSH設定ファイルを開き、次の設定を追加します。
Host nigsc-gw
HostName gw.ddbj.nig.ac.jp
User アカウント名
IdentityFile ~/.ssh/id_ed25519_nigsc-gw
IdentitiesOnly yes
Host nigsc-a001
HostName a001
User アカウント名
IdentityFile ~/.ssh/id_ed25519_nigsc-gw_a001
IdentitiesOnly yes
ProxyJump nigsc-gwアカウント名は、自分のものに置き換えてください。
5. ターミナルから接続を確認する
VS Codeから接続する前に、ターミナルからa001へ直接接続できることを確認します。
(WSLの場合は/home/user/.sshのconfigファイルに上記の内容を書き込むと確認できる)
ssh nigsc-a001a001へログインできれば、設定はできています。
6. VS Codeからa001へ接続する
VS Code左下のRemoteアイコン
をクリックします。
Connect to Host... → nigsc-a001 の順に選びます。
この状態で、File → Open Folder...
を選ぶと、a001から見えるホームディレクトリや解析フォルダを開けます。


コメント