全国オンライン対応受付 平日 9:00-18:00
お問い合わせ

開発記録 / 1cto.jp制作記 / Vol.26 1cto.jp制作記 Vol.3

記事 03

PowerShellのSCPが日本語パスで詰まった話——WindowsのSSHクライアントとBashの挙動の差

`Bad permissions. Try removing permissions for user: UNKNOWN\\UNKNOWN (Errno: 13 - Permission denied)`

2026-06-07 公開

コマンドを実行した。エラーが出た。

Bad permissions. Try removing permissions for user: UNKNOWN\\UNKNOWN (Errno: 13 - Permission denied)

PowerShellからEC2へのSCPでファイルを転送しようとしたときのことだ。接続できない、というより「鍵のパーミッションに問題がある」というエラーだ。


このエラーはSSHキーのファイルパーミッションに関するものだ。

Linuxでは、SSHの秘密鍵は所有者だけが読めるパーミッション(600)でないといけない。他のユーザーに読める状態だと「安全でない」として弾かれる。

Windowsでも同じ発想だが、実装が違う。Windows標準のOpenSSHは「このキーファイルにアクセスできるユーザーが自分だけか」をチェックする。Dropboxフォルダに置いたpemキーは、Dropboxのプロセスや管理者アカウントが読める状態になっていて、チェックに引っかかっていた。

エラーメッセージのUNKNOWN\\UNKNOWNはWindowsがアクセス権を持つユーザーをうまく解決できなかったときの表示だ。


Windowsでこのエラーを解消するには、pemキーのACL(アクセス制御リスト)から不要なユーザーを削除する必要がある。

icacls "C:\Users\itoh\claude\dxgame\dxgame-key.pem" /inheritance:r /grant:r "$env:USERNAME:R"

このコマンドを実行すると自分だけがアクセスできるようになる。ただし、一時的にDropboxの同期が外れることがある。毎回確認が必要だ。


別の方法を試した。Bashツールから同じSCPコマンドを実行した。

成功した。

Claude CodeはWindowsのPowerShellとBashの両方を持っている。Bashはwsl(Windows Subsystem for Linux)またはGit Bashのsshクライアントを使う。これらはWindowsのACLチェックではなく、Linuxのパーミッションチェックで動作する。

Dropboxフォルダ内のpemキーは、Linuxの視点では「読める」状態だ。chmod 600に相当する状態かを確認するのではなく、読めるかどうかだけを見ている。

詳しく調べるより先に切り替えた方が速い、と判断した。


もう一つの問題が日本語パスだった。

転送元のパスはD:/シンプルシステム株式会社 Dropbox/伊藤勝彦/000claude/1cto/articles/だ。日本語が含まれる。

SCPのコマンドラインではパスをシングルクォートで括った。

scp -i 'C:/Users/itoh/claude/dxgame/dxgame-key.pem' -r \
  'D:/シンプルシステム株式会社 Dropbox/伊藤勝彦/000claude/1cto/articles/' \
  ubuntu@(サーバー):/home/ubuntu/1cto/articles_import/

日本語文字はUTF-8で扱われる。Bashのsshクライアントはこれを問題なく処理した。


Windowsで開発するときのSSH/SCP周りは、ツールの選択でつまずきやすい。

PowerShell標準のSSHクライアント、Git Bash、WSL、それぞれ挙動が微妙に違う。pemキーのパーミッション問題はPowerShellに固有のことが多い。日本語パスの問題はツールによって変わる。

毎回調べて解決するより、「これが動く」という組み合わせを覚えておく方が実用的だ。私の場合はBashツール(Git Bash経由のssh/scp)が信頼できる選択肢になっている。

問題が起きたら、まず別のツールで試す。それが最も早い解決策になることが多い。

次回は、インタビューエンジンが写真を2枚受け取れるようにした話を書く。

シンプルシステム株式会社 代表 伊藤勝彦