Windows Terminalの「新しいタブ(ターミナル)を開く」に、いつもsshで接続して作業するメインのホストにシェルを起動する。
設定箇所
"list": [ { // Make changes here to the powershell.exe profile "guid": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}", "name": "Windows PowerShell", "commandline": "powershell.exe", "hidden": false }, { // Make changes here to the cmd.exe profile "guid": "{0caa0dad-35be-5f56-a8ff-afceeeaa6101}", "name": "cmd", "commandline": "cmd.exe", "hidden": false }, [...]
新しいタブを開くときの項目はここ。
このリストに自分用のカスタム設定を追加すればOK
タブを開く新しい項目を追加する
まずは見よう見まねで名前だけ追加してみる。
リストの末尾への追加時に,
のつけ忘れに注意。
{ "hidden": false, "name": "cloud-dev" }
これだけでも項目は追加される。
ただし中身はcmd.exe
のように見える
追加項目のコマンドにsshを指定する
commandline
を使って、ターミナルで起動するコマンドを指定する。
{ "hidden": false, "name": "cloud-dev", "commandline": "ssh.exe zaki@cloud-dev" }
はい、できました。
公開鍵認証設定してパスワードを聞かれないようにする(OpenSSH一般)
(以下、OpenSSH一般の話)
鍵設定されてなくてパスワード認証される場合は、ターミナルを開いた際にパスワードを聞かれる。
の、どれかを設定すればOK
パスフレーズなしキーペア作成と設定
Windows版OpenSSHでも作れた。
PS C:\Users\zaki> ssh-keygen.exe -t rsa -f .\.ssh\id_rsa_nopass Generating public/private rsa key pair. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in .\.ssh\id_rsa_nopass. Your public key has been saved in .\.ssh\id_rsa_nopass.pub. SHA256:x5sVSZnowmQOkBRiv0T3w+lTqNzJvzx6hpwDlQVbWgQ zaki@mascarpone The key's randomart image is: +---[RSA 2048]----+ | o.=+. E++..o | | . +...ooBo.o. | | o *O+. o | | . o =*=. . | | . o.S.o . | | . + + | | o o+ | | =.+. | | .=o. | +----[SHA256]-----+
Windows版は-N ""
が効かなかったんで、対話式に空パスフレーズ入力。
ただ、ssh-copy-id
が無いので手動で接続先サーバーに登録する。
(てか、昔はssh-copy-id
って無かった気がするので、いつもscp
してcat >>
してたような…)
PS C:\Users\zaki> cat .\.ssh\id_rsa_nopass.pub | ssh zaki@cloud-dev sh -c "cat - >> ~/.ssh/authorized_keys" zaki@192.168.0.18's password:
なんかもうちょっとシュッとできそうな気もするけど、ローカルの公開鍵をcat
した結果を、リモートにsshしたホスト上でcat
でファイルに追記している。
-i で秘密鍵ファイル指定でssh
PS C:\Users\zaki> ssh zaki@cloud-dev -i .\.ssh\id_rsa_nopass Last login: Thu Sep 3 08:08:21 2020 from 192.168.0.220 [zaki@cloud-dev ~]$
パスフレーズなし秘密鍵を-i
で指定すれば公開鍵は設定済みなのでパスなしsshできた。
.ssh/configに鍵ファイルパス指定
結局-i
だと毎回指定が必要で面倒なので、別アプリでも共通設定になる.ssh/config
(%USERPROFILE%\.ssh\config
)に鍵設定。
Host cloud-dev HostName 192.168.0.18 User zaki IdentityFile C:\Users\zaki\.ssh\id_rsa_nopass
すれば、鍵の指定も不要でsshログイン
PS C:\Users\zaki> ssh zaki@cloud-dev Last login: Thu Sep 3 08:16:03 2020 from 192.168.0.220 [zaki@cloud-dev ~]$
何が言いたいかというと、.ssh/config
の設定だったらVS Code + Remote Development + SSHみたいな別アプリでも設定が共通ということ。
Windows Terminalの設定
.ssh/config
に設定してあればそのまま、指定してなければ
"commandline": "ssh.exe zaki@cloud-dev -i C:\\Users\\zaki\\.ssh\\id_rsa_nopass"
みたいな感じにすれば
この通り、パスワードを聞かれることなくsshログインしてリモートのシェルを起動できる。
アイコン
機能的にはもう問題ないけど、見た目さみしいのでアイコンも設定してみる。
サンプルとしてこちらからアイコンを拝借。
ダウンロードして任意の場所に保存したら、icon
にそのパスを指定すればOK
{ "hidden": false, "name": "cloud-dev", "commandline": "ssh.exe zaki@cloud-dev", "icon": "C:\\Users\\zaki\\Pictures\\icon\\terminal\\iconmonstr-keyboard-2-240.png" }
良い感じになった。
実行中もこの通り。
もちろん、表示されているショートカット(上記だとCtrl + Shift + 5
)も効く。
自動で割り当てられるショートカットは定義順っぽい。
(例えば2番目に入れ替えるとCtrl + Shift + 2
に変化した)