0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

日本語名ユーザフォルダのWindowsとGit Bashでsshができない!

Posted at

背景

Windowsで新規ユーザを作成する際、Microsoftアカウントを使用すると、ユーザフォルダ名が意図せず日本語になることがある。この日本語のユーザフォルダ名は、文字コードの問題により様々な環境で不具合を引き起こす。Git Bash上でssh-keygen及びsshコマンドが実行できないという問題もその一つである。
今回は、新規で非日本語名ユーザを作成する以外の方法、すなわち使用中のユーザでssh-keygen及びsshが正しく実行できる方法を検討する。

環境

Windows11 Home 24H2 26100.7171
Git Bash v2.52.0

課題

image.png
日本語名ユーザでssh-keygenを実行すると、Saving key時に文字コードの問題で、No such file or directoryとなり、keyが作成できない。

PowerShellで同様の操作を行った場合はkeyを保存することができる。これは、PowerShellとGit Bashで使用しているSSHの実装が異なっているのが要因であり、Powershellは、Windowsに同梱されているC:/Windows/Syetem32/OpenSSH/ssh.exeを使用しており、Git Bashは、Git Bashに同梱されている/usr/bin/sshを使用している。

解決策

Git Bashで使用するSSHの実装を、PowerShellで使用していたSSH実装であるC:/Windows/System32/OpenSSH/ssh.exeに変更することで、日本語名ユーザでSSHできるようにする。

以下にGit Bash上でのコマンドライン操作を記述する。(#の行はコメント)

# ホームディレクトリに移動
cd ~

# ホームディレクトリ直下に./bashrcというファイルを作る 
touch ~/.bashrc

# .bashrcにPowerShellで使用していたSSH実装を使用する設定を記述する
echo 'export PATH="/c/Windows/System32/OpenSSH:$PATH"' >> ~/.bashrc
echo 'export PATH="$PATH:/usr/local/bin:/usr/bin:/bin"' >> ~/.bashrc

# .bashrcに記述した設定を適用する
source ~/.bashrc

# 実装が正しく切り替わったかを確認
which ssh
#/c/Windows/System32/OpenSSH/sshがでれば成功

# 実際にssh-keygenを実行する
ssh-keygen -T ed25519

# GitHubへのSSHキーの追加(下の記事参照)

# 最後にSSHできるかのテストをする
ssh -T git@github.com
#Hi! <username>! You've successfully authanticated, but GitHub does not provide shell access.が出れば成功

GitHubへのSSHキーの追加は以下の記事を参照。

これでGit Bash上でssh-keygen,sshを行うことができる。

まとめ

  • MSアカウントを使用して作成されたWindowsユーザは日本語名となることがあり、文字コードの差異により、様々な問題を引き起こすことがある。
  • Git Bashに同梱されているSSHクライアント(/usr/bin/ssh)が日本語パス(ユーザーフォルダ名)を正しく扱えない問題を回避する。
  • Windows標準搭載のOpenSSHクライアント(C:\Windows\System32\OpenSSH\ssh.exe)をGit Bashで使用するように設定を変更する。
  • Git Bashの起動時に読み込まれる~/.bashrcファイルに、OpenSSHの実行ファイルパスをPATH環境変数の最優先項目として追記する。
  • 新規ユーザーの作成なしに、既存の日本語名ユーザー環境でGit Bashを使用し続けることが可能になった。
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?