前提
- Windows 11 (Windows 10でもほぼ同じはず)
- サーバー側はローカルユーザー
- サーバー側のIPは固定されているとします.(そうでなくてもできるはず)
- クライアント側にはssh, ssh-keygen が入っている.(Windows 11の最新版ではデフォルトで入っていた)
- サーバー側にPort: 8888でjupyter serverが立っている
サーバー側にSSHサーバーを立てる (サーバー側)
-
システム設定
-オプション機能
-オプション機能を追加する
からOpen SSHサーバー
をインストールする -
SSHサーバーのコンフィグを修正する
sshd_config (追加する)
AllowTcpFowarding yes
TcpFowardingを許可しないとポートフォワーディングできない(はず)なので有効化する.
sshd_config (コメントアウトする)
#Match Group administrators
# AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
これは管理者アカウントのときにadministrators_authorized_keysを使用する設定を削除している.
- SSHサーバーを起動する
powershell
PS > Start-Service sshd
上記に加えて,sshd_configの中身を変えたときはRestart-Service sshd
によりサービスを再起動する必要がある.
ssh接続のために公開鍵と秘密鍵を作る (クライアント側)
powershell
PS > ssh-keygen -t ed25519
このコマンドで公開鍵と秘密鍵が作成された.
公開鍵を登録する(サーバー側)
- クライアント側で作成した公開鍵の中身をコピーして,サーバー側の
authorized_keys
に書き込む.初期状態ではデフォルトの参照先ファイル.ssh/authorized_keys
が無いはずなので,新しくファイルを作る.
(補足:sshd_configで AuthorizedKeyFile <参照先>
を設定すると参照先が変わる)
-
authorized_keys
のアクセス権限を修正する.
powershell
PS > icacls.exe .\authorized_keys /inheritance:r /grant "Administrators:F" /grant "SYSTEM:F"
正しい権限設定になっていない場合,ssh接続ができなかった.
ポートフォワーディングする.(クライアント側)
- ssh configを書く
config
Host servername
Hostname <サーバーのIPアドレス>
User <サーバのユーザー名>
IdentityFile <秘密鍵のファイルパス>
PasswordAuthentication no
PubkeyAuthentication yes
- ssh接続を確認する
powershell
PS > ssh servername
リモート側(サーバー側)のPowershellが見えたら成功.
- ポートフォワーディングする.
powershell
PS > ssh servername -L 8888:127.0.0.1:8888 -N
127.0.0.1
はローカルホストのことである.ただし,なぜかlocalhost
表記では正しく動作しなかった(何故?)
これでブラウザからlocalhost:8888
にアクセスしてjupyterが見えたら成功.