社内LANから外部へSSHするに当たってSocksで阻まれている人の手助けになれば・・・!
対象
Windows 10(Gitインストール済み)からsocks proxy経由でVSCode remote-sshを利用したい人
手順
※vscode/remote-ssh等のインストールは行われているとします。
- sshのconfigを作成する
- VSCodeのremote-sshに作成したconfigを読み込ませる
- 接続する
- 認証する
1. sshのconfigを作成する
以下のような内容のconfigを作成します。
config
# C:\Users\username\Documents\ssh\config
Host remote
HostName host or ip
User username
Port 22
ProxyCommand C:\Program Files\Git\mingw64\bin\connect.exe -S Username@socksproxy.host:port %h %p
IdentityFile file/path/to/id_rsa
StrictHostKeyChecking no
UserKnownHostsFile=/dev/null
注意点
- configの作成先はvscodeからアクセスできるところにしてください。
- 例えばwsl上の
~/.ssh/config
などにはしないでください。 - 素直にWindowsのファイルシステム上のマイドキュメントなどに作成してください
- 例えばwsl上の
- connect.exeに関して
- Gitに添付されているconnect.exeを利用します。
- IdentityFileのパスの例:
C:\Users\username\Documents\.ssh\jump\id_rsa
- 相対パスでも大丈夫だとは思いますが、未検証です
-
StrictHostKeyChecking no
- SSH接続時の警告メッセージを出力しない設定
-
UserKnownHostsFile=/dev/null
- knownHostsの読み込み・書き込み先を/dev/nullに設定する
2. VSCodeのremote-sshに作成したconfigを読み込ませる
以下の記事で紹介されているのでスキップ
...
3. 接続する
同じく以下の記事で紹介されているのでスキップ
...
4. 認証する
以下のポップアップ?が表示されるので、その中のdetails
をクリックすると
コンソールでsocksのパスワードを聞かれるので入力する
以上の手順で接続できるようになります。
ハマった部分
パスワード入力後にフィンガープリントに関するプロンプトに移り、入力できないまま接続に失敗する
以下を設定してフィンガープリントに関して聞かれないようにしてみると上手くいくかもしれません
StrictHostKeyChecking no
UserKnownHostsFile=/dev/null
configファイルで設定した鍵ファイルが読み込めない
- remote-wslで行っている場合、remote-wslを抜けてください
- configファイルの格納先がwsl上になっていないか確認してください
気になっている部分
※ご存知の方がいたらコメントで教えて下さい。
- Linux版のconnectコマンドは
.connectrc
でsocksのユーザー・パスワードが指定できるのですが、connect.exeでは同様のことができるのかどうか