====== Windows 10 OpenSSH ====== インターネット経由で宇宙地球環境情報処理システムのサーバにアクセスするには, ログインサーバ (踏み台サーバ)を経由する必要があります. ログインサーバへは SSHの公開鍵認証によりアクセスします. 本記事では, Windows10 に標準でインストールされている OpenSSH と PowerShell を使用します. また, X11 Forwarding の方法も説明します.\\ ※ Windows 11 で X11 Forwarding するには, X Window System アプリを別途インストールする必要がないため、[[https://learn.microsoft.com/ja-jp/windows/wsl/install|WSL2]] が簡単です. \\ ※[[:public:about_pdf|PDF について]] ===== 本記事の接続設定 ===== ^ ^ホストネーム^ログインネーム^ |サーバ|踏み台サーバ|踏み台username| |クライアント|localhost|username| ===== PowerShell の起動 ===== Windows 10 [[public:about_openssh|OpenSSH]] は PowerShell を利用する. PowerShell は, {{:public:win10_openssh:powershell.png?linkonly| "start" → "Windows PowerShell"}}から起動する. \\ ※ターミナルは Windows Terminal が使いやすい. Windows10 では、[[https://learn.microsoft.com/ja-jp/windows/terminal/install|インストール]] が必要だが、Windows 11 バージョン 22H2 以降は Windows Terminal が既定のターミナルとなり PowerShellを起動すると Windows Terminal が自動的に起動する。 ===== OpenSSHの確認 ===== OpenSSH クライアントがインストールされているか, PowerShell の下記コマンドで確認する. PS C:\> gcm ssh | fl Name : ssh.exe CommandType : Application Definition : C:\WINDOWS\System32\OpenSSH\ssh.exe Extension : .exe Path : C:\WINDOWS\System32\OpenSSH\ssh.exe FileVersionInfo : File: C:\WINDOWS\System32\OpenSSH\ssh.exe InternalName: OriginalFilename: FileVersion: 7.7.2.1 ... 上記のように, ssh.exe の詳細が表示されれば, インストール済みである. \\ 表示されない場合は管理者権限で Windows Update (バージョン1803以降) を行うと, 標準で OpenSSH クライアントがインストールされる. もしされない場合は, 管理者権限で "設定" → "アプリ" →{{ :public:win10_openssh:fig1.png?linkonly|"オプション機能"}} で, 機能の追加を選択し, OpenSSH クライアントをインストールする. ===== 鍵の作成 ===== PowerShell を起動し, ssh鍵を作成する. (#以降はコメント) PS C:\> ssh-keygen -t ecdsa -b 384 Generating public/private ecdsa key pair. Enter file in which to save the key (C:\Users\username\.ssh\id_ecdsa): # enter Enter passphrase (empty for no passphrase): # パスフレーズ入力 Enter same passphrase again: # パスフレーズ入力 Your identification has been saved in test. Your public key has been saved in test.pub. The key fingerprint is: SHA256:UQwYcMTRGPdEDwQ7y4z5OS+j9PhFpavrKZ3W7jEuH1E username@localhost The key's randomart image is: +---[ECDSA 384]---+ | .+*B+** | | .+..=.o | | + . E | | = + + | | o S + | | . o o | | ..+o* | | ..oBB.+ | | o*BO* | +----[SHA256]-----+ 作成した鍵はデフォルトで{{ :public:win10_openssh:fig2.png?linkonly |(C:\Users\username\.ssh\id_ecdsa)}}に作成される. 鍵はユーザー配下のフォルダに置かないと使用できない場合がある. ===== 鍵の申請 ===== 作成した公開鍵 id_ecdsa.pub の登録申請をする. \\  [[https://portal.isee.nagoya-u.ac.jp/iseeadm-bin/acc/skplatform.cgi|isee ログインサーバ申請 (内部ページ)]]  [[http://cidas.isee.nagoya-u.ac.jp/kyodo/regist.shtml.ja|CIDASシステム申請]] ===== 鍵の登録 (ssh-agent) ===== {{:public:win10_openssh:fig4.png?160 |}} ssh接続でのパスフレーズ入力を省き, ログインサーバ (踏み台サーバ) に秘密鍵を置くのを避けるため, ssh-agentを利用する. \\ "スタート" → "Windows管理ツール" → "サービス"で, サービス画面を開く(左図). {{ :public:win10_openssh:fig5.png?linkonly |"OpenSSH Authentication Agent"}}のプロパティを開き, スタートアップの種類は自動を選び, 開始を押し{{ :public:win10_openssh:fig6.png?linkonly |(プロパティ)}}, ssh-agentサービスを起動する. \\ 続いて, 秘密鍵 id_ecdsaを登録する. PS C:\> ssh-add 'C:\Users\username\.ssh\id_ecdsa' Enter passphrase for C:\Users\username\.ssh\id_ecdsa: # パスフレーズ入力 Identity added: C:\Users\username\.ssh\id_ecdsa (C:\Users\username\.ssh\id_ecdsa) 登録した鍵は, "ssh-add -l" で確認できる. もし登録した鍵を削除したい場合には "ssh-add -D" で削除する. ===== SSH接続 ===== 下記コマンドでssh接続する. -Aオプションは, 認証エージェントを転送する, つまりログインサーバに接続後, 続けて別のサーバに接続する際に, 最初に使った秘密鍵をそのまま使用するためにつける. PS C:\> ssh 踏み台username@踏み台サーバ -A The authenticity of host '踏み台サーバ (***.***.***.***)' can't be established. ECDSA key fingerprint is SHA256:UQwYcMTRGPdEDwQ7y4z5OS+j9PhFpavrKZ3W7jEuH1E. Are you sure you want to continue connecting (yes/no)? # yes Warning: Permanently added 踏み台サーバ,***.***.***.***' (ECDSA) to the list of known hosts. ===== X転送 ===== リモート接続時に X Window System (X11) を転送して, xアプリケーションウィンドウをローカルホストで利用する. まず, VcXsrv Windows X Server をダウンロードし, インストールする. \\ [[https://sourceforge.net/projects/vcxsrv/|VcXsrv ダウンロード]]\\ 起動画面ではデフォルトで進み, 最後の{{ :public:win10_openssh:fig7.png?linkonly |"finish configuration" 画面}}で, "save configuration"を押し, 適当な場所に設定を保存する (設定ファイルのデフォルト名は config.xlaunch). \\ 設定ファイルをダブルクリックすることで, VcXsrv Windows X Server が起動するようになるが, 自動起動させるために, スタートアップに登録する. \\ "スタート" → "Windows システムツール" →{{ :public:win10_openssh:fig9.png?linkonly |"ファイル名を指定して実行"}}で, shell:startup と打ち, スタートアップのフォルダを開く. さきほど保存した設定ファイル config.xlaunch をスタートアップフォルダに移動する. \\ 次に, 環境変数DISPLAYを設定する. VcXsrv Windows X Server が起動しているとインジケーターにアイコンが表示されるが, アイコンの上にマウスを乗せると "localhost:0.0 -1 clients" のように表示されるので, この localhost:0.0 を環境変数DISPLAYに設定する. ここでの locaohost 部分は, ローカルのホストネーム, 127.0.0.1, localhost のいずれでもよい. {{ :public:win10_openssh:fig11.png?direct&200|}} \\ PS C:\ [System.Environment]::SetEnvironmentVariable("DISPLAY", "localhost:0.0", "User") PS を再起動し, 設定されているか確認する. PS C:\ $env:DISPLAY localhost:0.0 x転送を許可するオプションを追加し, ssh接続する. xアプリケーションを起動し, 転送できているかを確認する. PS C:\ ssh -AXY 踏み台username@踏み台サーバ ===== ssh接続設定のファイル ===== 以上の設定をファイルに保存し (C:\Users\username\.ssh\config), sshコマンドを省略できる. \\ * IdentityFile は秘密鍵を ssh-agent に登録するため必要ないが, 記録のため記述しておくとよい. Host 踏み台 ForwardAgent yes ForwardX11 yes ForwardX11Trusted yes User 踏み台username HostName 踏み台サーバ IdentityFile "C:\Users\username\.ssh\id_ecdsa" 下記コマンドでssh接続できる. PS C:\ ssh 踏み台 ---- * [[public:macos10_openssh|OpenSSH on macOS 10.15]]