【SSH】teratermで「error:0909006C:PEM routines:get_name:no start line」エラーが発生した場合の対処方法

【SSH】teratermで「error:0909006C:PEM routines:get_name:no start line」エラーが発生した場合の対処方法 SSH

Tera Term で公開鍵認証を使って接続しようとした際に、error:0909006C:PEM routines:get_name:no start line と表示される場合は、読み込んだ鍵ファイルが PEM 形式として解釈できないことが原因です。ファイル先頭のヘッダ行が正しくない、鍵の形式が Tera Term の期待と異なる、文字コードやBOMの混入、誤って公開鍵や別形式の鍵を指定している、などが典型例です。以下の手順で原因を切り分け、確実に接続できる鍵形式へ変換します。

まず確認するポイント(最短チェック)

鍵ファイルをテキストエディタで開き、先頭が正しい開始行になっているかを確認します。OpenSSH 新形式の秘密鍵は -----BEGIN OPENSSH PRIVATE KEY-----、従来のPEM(OpenSSL)形式のRSA秘密鍵は -----BEGIN RSA PRIVATE KEY----- で始まります。これ以外の文言、余計な文字、空白行、BOM(Byte Order Mark)が先頭に入っていると Tera Term 側の OpenSSL が「no start line」と判断します。先頭や末尾に全角文字やコメントが紛れていないかも併せて確認します。

公開鍵や別形式を誤指定していないかの確認

.pub で終わるファイルは公開鍵であり、秘密鍵ではありません。接続設定で指定するのは秘密鍵ファイルです。また、PuTTY 形式の .ppk をそのまま指定しても読み込めない場合があります。PuTTYgen で「Conversions > Export OpenSSH key」を行い、OpenSSH 形式に変換した上で Tera Term に指定します。

OpenSSH新形式をPEM(従来形式)へ変換する

Tera Term のバージョンや同梱 OpenSSL のバージョンによっては、OpenSSH 新形式(BEGIN OPENSSH PRIVATE KEY)を正しく扱えないことがあります。その場合は一度 PEM(従来の OpenSSL 互換)形式に変換します。Windows 10/11 であれば標準搭載の ssh-keygen、または Git for Windows/WSL の ssh-keygen が利用できます。

# 既存の秘密鍵 id_ed25519(または id_rsa 等)を PEM 形式へ変換
# -m PEM を付けて形式を変え、-p で再保存。パスフレーズはそのままでも変更しても可。
ssh-keygen -p -m PEM -f id_rsa
# 変換後、先頭が「-----BEGIN RSA PRIVATE KEY-----」になっていることを確認

Ed25519 の鍵を使っている場合は、PEM へ変換しても Tera Term が扱えないケースがあります。その場合はサーバー側で PubkeyAcceptedKeyTypes の設定を見直すか、PuTTYgen で RSA 2048/3072 の鍵を作り直して接続検証を行います。

PuTTY形式(PPK)から OpenSSH/PEM へ変換する

既に .ppk をお持ちなら、PuTTYgen で「Load」から .ppk を読み込み、「Conversions > Export OpenSSH key」で OpenSSH 形式の秘密鍵ファイルに書き出します。必要に応じて上記の ssh-keygen -p -m PEM で PEM 形式へ再変換し、Tera Term に指定します。

文字コード・改行・BOMの影響を除去する

鍵ファイルの先頭に UTF-8 の BOM が付いたり、コピー&ペースト時に全角スペースや改行コードが変わったりすると、OpenSSL が開始行を認識できません。エディタの表示機能で BOM が付いていない UTF-8(もしくは ASCII)であることを確認し、先頭行の直前に空行や不可視文字が無いよう保存し直します。Windows の改行 CRLF 自体は通常問題になりませんが、混在や不正な文字があると失敗の原因になります。

鍵の取り違えやパス指定ミスの確認

同名の鍵が複数ディレクトリに存在すると、意図しないファイルを参照していることがあります。Tera Term の接続設定で、絶対パスで秘密鍵ファイルを指定し直し、誤って公開鍵や証明書(.cer, .crt)を選んでいないかを再確認します。権限エラーではなく形式エラーが出ている点からも、まずは「ファイル内容と形式の一致」を優先して見直します。

サーバー側とクライアントの両面チェック

サーバーの ~/.ssh/authorized_keys に配置した公開鍵と、クライアントで指定している秘密鍵がペアであることを再確認します。鍵ペアが一致していれば、Tera Term 側は「PEM として解釈できるか」が主な論点になります。Tera Term を最新版に更新することも有効です。古いバージョンでは新しい鍵形式のサポートが不十分な場合があります。

最終確認の手順

エディタで秘密鍵ファイルを開き、先頭行が -----BEGIN RSA PRIVATE KEY----------BEGIN OPENSSH PRIVATE KEY----- のいずれかで始まり、末尾が対応する END 行で閉じていることを確認します。先頭に余計な文字や空行、BOM がないことを確認し、必要であれば OpenSSH 形式から PEM 形式へ変換します。PuTTY 由来の鍵なら PuTTYgen で OpenSSH へ書き出し、Tera Term の「SSH認証」設定で当該ファイルを絶対パスで指定し直します。これらを順に行えば、no start line エラーは解消できます。

参考:鍵の再生成と再登録の例

変換が難航する場合は、作り直すのが早いこともあります。Windows で RSA 鍵を作成し、公開鍵をサーバーへ登録する例を示します。

# 鍵の新規生成(パスフレーズ推奨)
ssh-keygen -t rsa -b 3072 -m PEM -f C:\Users\you\.ssh\tt_rsa

# 公開鍵をサーバーへ登録(例:Git Bash から)
ssh-copy-id -i C:\Users\you\.ssh\tt_rsa.pub user@server
# or 手動で tt_rsa.pub の内容をサーバーの ~/.ssh/authorized_keys に追記

生成した tt_rsa(秘密鍵)を Tera Term の秘密鍵として指定すれば、形式不一致による「no start line」エラーは避けられます。