kmiya-culti / RLogin

RLoginは、Windows上で動作するターミナルソフトです
http://nanno.bf1.jp/softlib/man/rlogin/
MIT License
463 stars 16 forks source link

FIDO/U2F ハードウェア認証機能のサポートについて #104

Closed ktooi closed 1 year ago

ktooi commented 1 year ago

ecdsa-sk 及び ed25519-sk タイプの認証機能のサポートをお願いできないでしょうか。

FIDO/U2F ハードウェアセキュリティキーを利用して SSH 認証をしたいと考えています。 上記タイプの鍵を Rlogin で指定すると、 SSH ログイン試行時にログインパスフレーズ入力画面が出力され、セキュリティキーの読み込みが行われません。

image

参考までに、 Windows 版の OpenSSH (Beta 版) では下記のように表示されます。

image

>ssh -V
OpenSSH_for_Windows_9.2p1, LibreSSL 3.6.1

何卒、よろしくお願いいたします。

kmiya-culti commented 1 year ago

前に調べた感想では、Windows Helloがらみでややこしいなぁって感じでした・・・ USB-HIDでLowLevelなアクセスも可能なようですが制限があるようです

安易な方法では、ないですが最近のWindowsでは、opensshがインストールされているようなので ssh-agentサービスを使用すれば可能かもしれません

コントロール パネル\すべてのコントロール パネル項目\Windows ツール\サービス サービス名:ssh-agent 表示名:OpenSSH Authentication Agent スタートアップの種類:自動 サービスの状態:開始

Power Shellやコマンドプロンプトで・・・ ssh-add ecdsa-sk ssh-add -L

で公開鍵が表示されれば使えるかもしれません・・・(FIDOを持っていないので確認できません)

RLoginでは、オプション・プロトコル・認証キーでagentサービスが動いてキーが登録されていれば Wagentの鍵として使用を選択することが出来ます

ktooi commented 1 year ago

ご連絡が大変遅くなり申し訳ございません。

既に調査頂いていたのですね。

ssh-agent を利用してでも FIDO で認証できれば問題ないです。 しかしながら、私の環境ではうまく連携させることができませんでした。

私の環境といたしましては、下記のようになっています。

Edition Windows 11 Pro
Version 22H2
Installed on    ‎10/‎8/‎2022
OS build    22621.1413
Experience  Windows Feature Experience Pack 1000.22639.1000.0

ssh-add -L にて登録済み ecdsa-sk の公開鍵が出力させることを確認いたしました。

ssh-agent も下記の通り動作済みです。

PS C:\WINDOWS\system32> Get-WmiObject win32_service  | ?{$_.Name -like 'ssh-agent*'} | select Name, DisplayName, State, PathName

Name      DisplayName                  State   PathName
----      -----------                  -----   --------
ssh-agent OpenSSH Authentication Agent Running "C:\Program Files\OpenSSH\ssh-agent.exe"

PS C:\WINDOWS\system32>

※ おそらく、デフォルトでは C:\Windows\System32\OpenSSH\ssh-agent.exe が実行されるかと思うのですが、 openssh beta によってインストールされたバイナリが実行されているようです。

Windows Terminal から OpenSSH の ssh クライアントを実行したところ、 FIDO で認証することができました。最初のコメントに添付いたしました画像がその時のものです。

この状態で Rlogin のオプション・プロトコル・認証キーを表示したところ、キーの一覧には何も表示されませんでした。

また、下記のように別途鍵を生成し、再度 Rlogin のオプション・プロトコル・認証キーを確認したところ、後から作成した鍵のみが一覧に表示されました。

> ssh-keygen.exe -t ed25519 -f id_ed25519_test
> ssh-add id_ed25519_test
> ssh-add -L
# FIDO 用の鍵と、別途生成した鍵の両方が表示されることを確認。
kmiya-culti commented 1 year ago

御確認有り難うございます。

残念ですね・・・鍵自体は、ecdsaやed25519と同じなのでいけると思いましたが別の名前のようですね。 少し調べてみましたが、openssh独自の名前で仕様がすこし拡張されているようです。

agentを利用するなら鍵の仕様に左右されない利用方法があるかもしれないので試してみようかと思います。

ktooi commented 1 year ago

お返事と調査ありがとうございます。

こちらでも何か確認できることがあればご協力させていただければと存じます。

kmiya-culti commented 1 year ago

試しに非対応の鍵でもagentでは、利用できるようにしてみました。 調査いただければ幸いです。

http://nanno.bf1.jp/softlib/rlogin/2.28.2/

ktooi commented 1 year ago

早速のご対応ありがとうございます。 確認したところ、 agent 経由で FIDO キーを利用してログインすることができました!

ただ、 FIDO キーを利用した agent 転送の認証がうまくいかないようです。 ご確認いただけないでしょうか?

こちらで確認した内容は次の通りです。

Rlogin ではなく、 OpenSSH の ssh クライアントにて下記ができる事を確認:

> ssh ktooi@192.0.2.1 -A  # エージェント転送を有効にして作業端末から踏み台サーバにログイン。(FIDO キーを利用してログイン。)
> ssh 192.0.2.200  # 踏み台サーバからフロントサーバへ、エージェント転送で作業端末の FIDO を利用してログイン。

Rlogin にて下記を確認:

# Rlogin の Server Select から踏み台サーバにログイン。(FIDO キーを利用してログイン。)
$ ls $SSH_AUTH_SOCK  # 踏み台サーバ上に、エージェント転送で生成されたソケットファイルが存在することを確認。
/tmp/ssh-39brbvLZHL/agent.1039778
$ ssh 192.0.2.200  # 踏み台サーバからフロントサーバへ、エージェント転送で作業端末の FIDO を利用してログイン。 ← ここで `Permission denied (publickey).`

何卒、よろしくお願いいたします。

kmiya-culti commented 1 year ago

ご確認有り難うございます。 内部のagentで鍵の型チェックを行っていました。 早速、修正しました。

http://nanno.bf1.jp/softlib/rlogin/2.28.2/

ktooi commented 1 year ago

ご対応ありがとうございます。 FIDO キーを利用したエージェント転送が使えることを確認致しました。

ちょっと気になったのですが、エージェント転送で FIDO キーを利用すると、 Touch your security key. のウィンドウ (本 issue 最初のコメントの2枚目) が Rlogin の裏に隠れ、 Rlogin のウィンドウからは応答がなくなるので一見すると Rlogin がフリーズしたように感じます。 FIDO キーにタッチすれば問題なく動くので、本質的には問題無いのですが、 Touch your security key. のウィンドウが Rlogin の前面に出せれば良いように思いました。

当初本 issue で解決したかった問題は解決したので、上の件の対応に時間が掛りそうなら上の件は別途 issue を起票させていただくのが良いかなと思うのですがいかがでしょうか? エージェント転送で FIDO キー等を利用するケースは見たところ少なそうな気もするので、対応しないでも問題ないかなと思います。

ご確認のほど、よろしくお願いします。

kmiya-culti commented 1 year ago

ご確認有り難うございます。 内部agentの動作をスレッドにしてみました。 改善するかどうか解りませんがフリーズしたようには、ならないと思います。

http://nanno.bf1.jp/softlib/rlogin/2.28.2/

ktooi commented 1 year ago

ご対応ありがとうございます。 エージェント転送の際の挙動が改善されました!

他、特に気になるような挙動等も見受けられません。 お忙しいところ何度もご対応頂きましてありがとうございました。

本 Issue は Close させて頂いてよろしいでしょうか? 次期正式版リリースまで Open になりますか?