FAQ: SSH
🆀 SSH接続時の「Permission denied (publickey)」エラーの原因と対策
- ここでは、「クライアント」は、ユーザーのローカルコンピュータ(自分の計算機)を指します。
- ここでは、「サーバー」は、遺伝研スパコンを指します。
クライアントとサーバーの関係は、以下の図のようになっています。
🅐 SSH接続時に「Permission denied (publickey)」エラーが発生する原因はいくつかあります。以下の確認項目を順にチェックしてください。
1. ファイルパーミッションの確認 (クライアント計算機がLinux, Mac, Windows WSLの場合)
以下の表に従って、クライアント側(ユーザーのローカルコンピュータ(自分の計算機))、サーバ側(遺伝研スパコン)の両方について、 ファイルパーミッションが正しく設定されているかを確認してください。
パス(例) | 役割 | パーミッション | 備考 |
---|---|---|---|
/home/USERNAME/ | ホームディレクトリ | 750, 711, 700など | ホームディレクトリに他人の書き込み権限がないことが必須。クライアント側とサーバ側の両方に存在する。 「USERNAME」には、ユーザーのアカウント名が入る。 |
~/.ssh/ | 鍵や設定ファイルの格納先 | 700 | クライアント側とサーバ側の両方に置く。 |
~/.ssh/id_ed25519 (または id_rsa) | 秘密鍵 | 600 | 秘密鍵はクライアント側のみに置く。サーバ側に置いてはいけない。 |
~/.ssh/authorized_keys | 接続許可する公開鍵リスト | 600 | サーバに登録された公開鍵が書かれたファイル。サーバ側に存在する。クライアント側には存在しない。 |
/.ssh/known_hosts | 接続先ホスト鍵の記録 | 600 または 644 | クライアント側に存在する。サーバ側には存在しない。 |
パーミッションの確認方法(1) stat
コマンド
stat
コマンドを用いるとファイルパーミッションを数字で表示することができます。
stat -c "%a %n" your-file
実行例
you@MINIPC:~ (2025-05-05 14:07:49)
$ stat -c "%a %n" ~/.ssh
700 /home/you/.ssh
you@MINIPC:~ (2025-05-05 14:08:06)
$ stat -c "%a %n" ~/.ssh/*
600 /home/you/.ssh/authorized_keys
664 /home/you/.ssh/config
600 /home/you/.ssh/id_ed25519
644 /home/you/.ssh/id_ed25519.pub
600 /home/you/.ssh/id_rsa
644 /home/you/.ssh/id_rsa.pub
600 /home/you/.ssh/known_hosts
パーミッションの確認方法(2) ls -l
ファイルリストを表示する際に一般的に用いられているls
コマンドを用いてファイルパーミッションを表示することができます。
rwx
はアクセス権を示す文字で、r=4
、w=2
、x=1
として合計した数が数字表記です。たとえば rwx------
は 700
、rw-r--r--
は 644
です。
実行例
🎯 you@MINIPC:~ (2025-05-05 14:08:37)
$ ls -l ~/.ssh
合計 80
-rw------- 1 you you 0 4月 10 18:21 authorized_keys
-rw-rw-r-- 1 you you 1373 5月 5 13:37 config
-rw------- 1 you you 419 5月 2 07:52 id_ed25519
-rw-r--r-- 1 you you 105 5月 2 07:52 id_ed25519.pub
-rw------- 1 you you 1766 3月 14 14:09 id_rsa
-rw-r--r-- 1 you you 105 3月 14 14:09 id_rsa.pub
-rw------- 1 you you 10368 5月 2 08:05 known_hosts
- SSHログは
/var/log/auth.log
またはjournalctl -u ssh
で確認できます。