WindowsのOpenSSHクライアント
とは
まだベータ版
WindowsのOpenSSHを使うモチベーション
PuTTYだと、OpenSSHと鍵の形式が違うので公開鍵の管理が面倒
PuTTYの設定とOpenSSHの設定を両方覚えるのに疲れた
PuTTYの設定がレジストリに記録なのでPC移行時にエクスポートを忘れがち
よくなったこと、わるくなったこと
OpenSSHの .ssh/config で設定書けるようになった
pagent.exe をタスクトレイに常駐させなくてよくなった
PuTTYの豊富すぎる設定からの卒業
PuTTYがやってくれていたssh通信ログの保存ができなくなった
導入手順
1. Winキーを押して「スタート」メニューを開き、 オプション機能の管理 と入力して開く
2. 機能の追加で OpenSSH クライアント をインストール
https://gyazo.com/ac383d8a2095f4363a13965990a16b5a
3. C:\Windows\System32\OpenSSH 以下に ssh.exe などがインストールされる。
code:PowerShell
taka > dir C:\Windows\System32\OpenSSH\ ディレクトリ: C:\Windows\System32\OpenSSH
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2018/03/12 1:15 343552 scp.exe
-a---- 2018/03/25 1:05 355840 sftp-server.exe
-a---- 2018/03/12 1:15 408064 sftp.exe
-a---- 2018/03/12 1:15 531968 ssh-add.exe
-a---- 2018/03/12 1:15 495616 ssh-agent.exe
-a---- 2018/03/12 1:15 657920 ssh-keygen.exe
-a---- 2018/03/12 1:15 594944 ssh-keyscan.exe
-a---- 2018/03/25 1:05 154624 ssh-shellhost.exe
-a---- 2018/03/12 1:15 894464 ssh.exe
-a---- 2018/03/25 1:05 970752 sshd.exe
-a---- 2018/03/25 1:05 2143 sshd_config_default
OpenSSH_for_Windows_7.6p1, LibreSSL 2.6.4
4. ssh-agentサービスを自動起動設定する。Unix/Linux系OSのssh-agentと違って、ssh-agentプロセスをシェル上で起動して環境変数を設定して・・という操作は不要(サービスだと分からずにちょっとハマりました)。あとでここに鍵を登録します。
https://gyazo.com/e73433690c84ed6e189fcd9a8daa86b2
5. ホームディレクトリ以下に .ssh ディレクトリを作って(C:\Users\<username>\.ssh)、 config ファイルと鍵を置きます。鍵は ssh-keygen.exe で作れます。自分は、PuTTYの鍵からOpenSSH形式に変換したものを置きました。
code:PowerShell
ディレクトリ: C:\Users\taka\.ssh
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2018/02/26 9:05 180 config
-a---- 2018/02/26 13:47 3311 id_rsa
-a---- 2018/02/26 17:54 750 id_rsa.pub
6. .ssh/config にOpenSSHの設定を書く
code:.ssh/config
TCPKeepAlive yes
Host gateway
HostName gateway.example.com
User shimizukawa
IdentityFile C:\Users\taka\.ssh\id_rsa
DynamicForward localhost:1080
7. 普段使う秘密鍵を ssh-agent に登録
code:PowerShell
Enter passphrase for id_rsa:
Identity added: id_rsa (id_rsa)
4096 SHA256:RTUy9YdxQzN7NwuSMa9DMepVko5sRUXPHGXlHlZHv4c id_rsa (RSA)
パスフレーズを入力して鍵登録が完了すると、上記のように登録済み鍵一覧が確認できます。これ以降、ssh-agentサービスが起動していれば、OSを再起動してもパスフレーズの入力は必要ありません。
登録した鍵の削除は ssh-ad -d <filename> らしいけど、 No such file or directory と言われてうまくいかないので、 ssh-add -D で全削除している。
GitHubとの接続に使う
以前は GIT_SSH=plink.exe と指定して、pagentを常駐して鍵の解決などをやっていました。これをOpenSSHに切り替えます。
まず、sshコマンドでGitHubへの接続が可能か確認します。
GitHubに登録してある公開鍵に対応する秘密鍵が ssh-add してあれば繋がるはず。
code:PowerShell
taka > ssh git@github.com PTY allocation request failed on channel 0
Hi shimizukawa! You've successfully authenticated, but GitHub does not provide shell access.
Connection to github.com closed.
gitコマンドからこのsshを使うように、 GIT_SSH 環境変数に明示的に設定
https://gyazo.com/4940ec826e0f25a125ccd25eb314d9c3
これで、 git clone ssh://github.com/... のような操作が実行できました。
WSL (Windows Servie for Linux)からの利用
#WSL のUbuntuにもsshはインストールされている せっかくWindows上でssh-agentサービスが動作しているので別途鍵を管理するのは避けたい
WSL内から ssh ではなく ssh.exe を実行することで、Windows側のsshを使える
code:bash
/usr/bin/ssh
/mnt/c/Windows/System32/OpenSSH/ssh.exe
code:bash
taka ~$ ssh.exe git@github.com PTY allocation request failed on channel 0
Hi shimizukawa! You've successfully authenticated, but GitHub does not provide shell access.
Connection to github.com closed.
WSL環境でも GIT_SSH=ssh.exe で git clone 等ができました。
Windows 10 Fall Creator Update (2017秋) ではNGでした
Windows 10 Sprint Update (2018春) でもだめだった
Windows 10 Insider Preview で2018春以降にできるようになった(記憶)
ネタ元
タグ