====== 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]]