Windows11にしてから久しぶりにPuttyでの自動ログインをしようとしたらパスフレーズを要求され(Filezillaでも同様)、いつも自動ログインでしか使ってなかったので色々調べるのに超時間がかかったので、誰かの参考になればと思い記事に残しておくことにしました。
"C:\Program Files\PuTTY\putty.exe" -load Puttyのセッション名 -l ユーザー名 -pw パスワード
で自動ログインできていました。
&
いつの間にかFilezillaでのSSH接続でもパスフレーズを求められるようになっていました。
①Windows11になってからSSHがらみ(WindowsのSSH-AGENT関係?)で何か変わった
②Windows11以前はパスフレーズなしで秘密鍵を作成・使用していたけど、私の記憶にないだけでWindows11以降に自分でパスフレーズありで秘密鍵を再生成した
③Puttyのpageant.exeにおいて、パスフレーズをキャッシュしなくなった
のどれかです、と思います。
それにFilezillaでのSSH接続でも今までと違いパスフレーズを求められるようになったので③は違うと思います。
WindowsのSSHは複数の接続方法があるみたいで、よくわかりません。
どうも原因は①というか
・Windows11標準のssh-agent(サービスの『OpenSSH Authentication Agent』)が自動起動しない、あるは自動起動するようにしてWindows11標準のssh-agentが起動してもパスフレーズが保存されない
みたいです。
・Windows11標準のssh-agentを置き換える
・PowerShellとコマンドプロンプトで色々やってパスフレーズを登録する
等、もしかしたら解決できる手順がいくつかありましたが、
と、
・この記事の解決策のリスク
に関して、ハッキングされてもされなくてもリスクの度合いはほぼ同じなので、私はこの記事の手順での解決を選択しました。
■2024.8.12 追記・ここまで■
その前に、SSH関係の専門用語のおさらいです。
補足説明不要の方はPuttyで自動ログインする手順へジャンプしてくださいませ。
鍵ペア・・・公開鍵・秘密鍵のこと。
パスワード・・・一般的にはサーバーパスワードのこと、たぶん。
パスフレーズ・・・必要に応じて秘密鍵に設定する、少し文字数が多いパスワードのこと。
ファイル名は id_rsa.pub であることが多いみたいです。
秘密鍵のファイル名は id_rsa であることが多いみたいです。
サーバー上で例えばPuttyで読み込める形式に変換できることも多く、この例の場合のファイル名は id_rsa.ppk になります。
id_rsa.pub
の対になる、サーバー上で作成した秘密鍵
id_rsaあるいはid_rsa.ppk
をパソコン上の puttygen.exe でパスフレーズを除去して別のファイル名
ほにゃらら.ppk
として作成し、サーバー上ではid_rsa.pubを使い、ローカルではPuttyやFilezillaでほにゃらら.ppkを使用することでWindows11でもSSHで自動ログインできました。
公開鍵・・・id_rsa.pub
秘密鍵・・・id_rsaあるいはid_rsa.ppk
puttygen.exe でパスフレーズを除去した秘密鍵・・・ほにゃらら.ppk
です。
パスフレーズを除去する、つまりパスフレーズなしということは、秘密鍵が盗まれた場合は最悪サーバー上の全ファイルを好き勝手にされてしまうリスクがありますので、セキュリティと使い勝手のどちらを優先するか、よく検討してから後述の手順をお試しください。
■【Windows11】Puttyで自動ログインできるようにする手順■
以下、putty.exeにてセッションをちゃんと設定・保存してある前提です。
●セッション:ホスト名(初期サブドメイン名またはサーバーのIPアドレス等)
●セッション:ポート(たぶん22あるいは10022)
●接続 → データ:自動ログインのユーザー名(大抵の場合サーバーアカウントのユーザー名あるいはサーバーID)
●接続 → SSH → 認証 → クレデンシャル:認証のための秘密鍵ファイル
の4箇所です。
つまり、『id_rsa』でも『id_rsa.ppk』でもOKです。
そうすると
鍵を守るためのパスフレーズなしで本当に保存するのですか?
を聞かれるので『はい(Y)』をクリックして ほにゃらら.ppk 等、好きなファイル名で保存します。
"C:\Program Files\PuTTY\putty.exe" -load Puttyのセッション名 -l ユーザー名 -pw パスワード
にて自動ログインできるようになりますが、
つまり、
"C:\Program Files\PuTTY\putty.exe" -load Puttyのセッション名
にて自動ログインできるようになります。
■修正後のリンク先:"C:\Program Files\PuTTY\putty.exe" -load Puttyのセッション名
半角スペース『 』やダブルクォーテーション『"』に注意してください。
■注意■
何度も書きますが、パスフレーズなしの秘密鍵が盗まれた場合は最悪サーバー上の全ファイルを好き勝手にされてしまうリスクがありますので、セキュリティと使い勝手のどちらを優先するか、よく検討してから上記手順をお試しください。
余計な説明が不要の方はPuttyで自動ログインする手順へジャンプしてくださいませ。
サーバーにSSHで接続するPuttyでの自動ログインですが、Windows10までは(putty.exeにてセッションをちゃんと設定・保存してあれば)適切なコマンドラインだけで自動ログインできてました。
参考:PUTTYで自動接続/ログインする方法
私の場合はWindows10までは
"C:\Program Files\PuTTY\putty.exe" -load Puttyのセッション名 -l ユーザー名 -pw パスワード
で自動ログインできていました。
久しぶりにPuttyでの自動ログインをしようとしたら、2つのサーバーで同じ症状つまりWindows11にしてからパスフレーズを求められるようになってました。
&
いつの間にかFilezillaでのSSH接続でもパスフレーズを求められるようになっていました。
考えられることは
①Windows11になってからSSHがらみ(WindowsのSSH-AGENT関係?)で何か変わった
②Windows11以前はパスフレーズなしで秘密鍵を作成・使用していたけど、私の記憶にないだけでWindows11以降に自分でパスフレーズありで秘密鍵を再生成した
③Puttyのpageant.exeにおいて、パスフレーズをキャッシュしなくなった
のどれかです、と思います。
②の場合に、Windows7・8・10の時はパスフレーズなしの秘密鍵を使っていて、Windows11以降に再生成してその際に私がパスフレーズを入力して再生成した・・・という可能性もありますが私の記憶にはありませんし、サーバー上で公開鍵・秘密鍵を作成する際に例えばXserverでは必ずパスフレーズが必要なので②ではないはずです。
③の場合、Windows7・8・10の時にPuttyで1番最初に自動ログインしようとした時にパスフレーズを要求され、『次回以降は表示しない』的な警告表示で『はい』を選択してパスフレーズがキャッシュされ、それ以降は自動ログインできていた・・・という可能性もゼロではありませんが、1度きりのそんな昔のことは覚えていません。。。
そもそも私はpageant.exeを自動起動させていませんし、今回初めてその存在を知ったくらいなのでたぶんpageant.exeは関係ないはずです。
それにFilezillaでのSSH接続でも今までと違いパスフレーズを求められるようになったので③は違うと思います。
つまり①な気がします、と思います。
WindowsのSSHは複数の接続方法があるみたいで、よくわかりません。
参考:混沌を極めるWindowsのssh-agent事情
■2024.8.12 追記・ここから■
どうも原因は①というか
・Windows11標準のssh-agent(サービスの『OpenSSH Authentication Agent』)が自動起動しない、あるは自動起動するようにしてWindows11標準のssh-agentが起動してもパスフレーズが保存されない
みたいです。
ググると、
・Windows11標準のssh-agentを置き換える
・PowerShellとコマンドプロンプトで色々やってパスフレーズを登録する
等、もしかしたら解決できる手順がいくつかありましたが、
・多少手間かけてPC内にパスフレーズを保存するリスク(&この解決策の手間)
と、
・この記事の解決策のリスク
に関して、ハッキングされてもされなくてもリスクの度合いはほぼ同じなので、私はこの記事の手順での解決を選択しました。
というか、すでにこの記事の手順で自動ログインできるようにしてあるので、後からわかった多少手間がかかる解決策を今さらやる気が起きません><
■2024.8.12 追記・ここまで■
Puttyで自動ログインできなくなった原因の予想・解決策を調べるのに超時間がかかりましたがようやく解決できたので、Windows11でもPuttyで自動ログインできるようにする手順を説明します。
その前に、SSH関係の専門用語のおさらいです。
補足説明不要の方はPuttyで自動ログインする手順へジャンプしてくださいませ。
■専門用語■
鍵ペア・・・公開鍵・秘密鍵のこと。
パスワード・・・一般的にはサーバーパスワードのこと、たぶん。
パスフレーズ・・・必要に応じて秘密鍵に設定する、少し文字数が多いパスワードのこと。
公開鍵・・・公開鍵はサーバー上に設置し(自動的に設置され)ます。
ファイル名は id_rsa.pub であることが多いみたいです。
秘密鍵・・・秘密鍵はクライアント側に設置(自分のパソコンに保存)します。
秘密鍵が盗まれるとサーバーにアクセス可能になるため、セキュリティ的にはパスフレーズがあるほうが良く、今どきのサーバーはパスフレーズ必須だったります。
秘密鍵のファイル名は id_rsa であることが多いみたいです。
サーバー上で例えばPuttyで読み込める形式に変換できることも多く、この例の場合のファイル名は id_rsa.ppk になります。
公開鍵のファイル名・秘密鍵のファイル名は一般的には拡張子を除いた部分が同じファイル名であればOKというかそれで対になっていますが、拡張子を除いた部分は必ずしも同じファイル名である必要はないみたいで、後述の手順のように、サーバー上で作成した公開鍵
id_rsa.pub
の対になる、サーバー上で作成した秘密鍵
id_rsaあるいはid_rsa.ppk
をパソコン上の puttygen.exe でパスフレーズを除去して別のファイル名
ほにゃらら.ppk
として作成し、サーバー上ではid_rsa.pubを使い、ローカルではPuttyやFilezillaでほにゃらら.ppkを使用することでWindows11でもSSHで自動ログインできました。
ファイル名についてまとめると
公開鍵・・・id_rsa.pub
秘密鍵・・・id_rsaあるいはid_rsa.ppk
puttygen.exe でパスフレーズを除去した秘密鍵・・・ほにゃらら.ppk
です。
■注意■
パスフレーズを除去する、つまりパスフレーズなしということは、秘密鍵が盗まれた場合は最悪サーバー上の全ファイルを好き勝手にされてしまうリスクがありますので、セキュリティと使い勝手のどちらを優先するか、よく検討してから後述の手順をお試しください。
■【Windows11】Puttyで自動ログインできるようにする手順■
以下、putty.exeにてセッションをちゃんと設定・保存してある前提です。
セッションの正しい設定方法は、各サーバーのSSHの説明(『サーバー名 SSH』でググると多分見つかります)および『PuTTY 使い方』等でググってくださいませ。
大事な箇所は、putty.exeにて
●セッション:ホスト名(初期サブドメイン名またはサーバーのIPアドレス等)
●セッション:ポート(たぶん22あるいは10022)
●接続 → データ:自動ログインのユーザー名(大抵の場合サーバーアカウントのユーザー名あるいはサーバーID)
●接続 → SSH → 認証 → クレデンシャル:認証のための秘密鍵ファイル
の4箇所です。
手順を端的に書くと、 パスフレーズが設定された秘密鍵をputtygen.exeを使ってパスフレーズを除去し、パスフレーズを除去したその秘密鍵を使うことでWindows11にてPuttyで自動ログインできるようにします。
この手順はWindows11より前では不要でした、というか、この手順をWindows7・8・10で実行していません。
①puttygen.exeを起動して、『既存の秘密鍵の読み込み』の箇所の『読み込み』をクリック

ファイル選択のダイアログが表示され、選択できる拡張子が Putty秘密鍵ファイル(*.ppk) になっていますが、全てのファイルに変更すればファイル『id_rsa』も読み込み可能です。
つまり、『id_rsa』でも『id_rsa.ppk』でもOKです。
パスフレーズが設定されていればパスフレーズを入力します。

②読み込んだ状態では表示されているはずの『鍵のパスフレーズ』および『パスフレーズの確認』を除去(空欄に)します。

③『秘密鍵を保存』をクリック
そうすると
鍵を守るためのパスフレーズなしで本当に保存するのですか?
を聞かれるので『はい(Y)』をクリックして ほにゃらら.ppk 等、好きなファイル名で保存します。
④putty.exeにて該当のセッションを読み込み、接続 → SSH → 認証 → クレデンシャルにて、『公開鍵認証』の下にある『認証のための秘密鍵ファイル』を先ほどの③の ほにゃらら.ppk に変更します。

⑤セッションを(普通は同名で)保存します。
ここまですると、この記事の1番最初の
"C:\Program Files\PuTTY\putty.exe" -load Puttyのセッション名 -l ユーザー名 -pw パスワード
にて自動ログインできるようになりますが、
①②③④⑤をしてあると -l ユーザー名 -pw パスワード は不要です。
つまり、
"C:\Program Files\PuTTY\putty.exe" -load Puttyのセッション名
にて自動ログインできるようになります。
私はランチャー(ArtTips)にコマンドラインを登録して自動ログインしていますが、putty.exeのショートカットを修正しても自動ログインできます。
⑥putty.exeのショートカットを作成し、右クリックの『プロパティ』を選択して、リンク先を変更したら『適用』をクリックします。
■元のリンク先:"C:\Program Files\PuTTY\putty.exe"
■修正後のリンク先:"C:\Program Files\PuTTY\putty.exe" -load Puttyのセッション名
半角スペース『 』やダブルクォーテーション『"』に注意してください。

ショートカットのファイル名は『putty.exe - ショートカット』ではなく、わかりやすいファイル名に変更しておくことをおすすめします。
FilezillaでのSSH接続も、パスフレーズを除去した③のほにゃらら.ppkを登録することで自動ログイン可能です。
Windows11でPuttyで自動ログインできない・・・を解決する方法は以上です。
■注意■
何度も書きますが、パスフレーズなしの秘密鍵が盗まれた場合は最悪サーバー上の全ファイルを好き勝手にされてしまうリスクがありますので、セキュリティと使い勝手のどちらを優先するか、よく検討してから上記手順をお試しください。
まあ普通は秘密鍵をメール添付とかクラウドに上げるとかしないので、自分のパソコンがハッキングされなければ問題ないと思います。
以上、自己責任でどうぞ♪