🔑

LinuxのSSH認証でed25519鍵を使う方法

2023/09/19に公開

今回、フィヨルドブートキャンプの課題で「Linuxで公開鍵方式を使用してSSH認証する」方法について、かなりの時間を費やしたので、健忘録として残すことにしました😭

パスワード方式を禁止して、公開鍵方式を使ってログインするための手順
(サーバ側で実施)
サーバ接続のために、ひとまずパスワード認証を許可する
※これをしておかないと、後で作成する公開鍵をサーバー側へ送れない

$ vim /etc/ssh/sshd_config
    PasswordAuthentication yes
    RSAAuthentication yes
    PubkeyAuthentication yes

sshディレクトリを作成する
$ mkdir ~/.ssh

.sshの権限を700(自分のみ読み書き可能)にする
$ chmod 700 ~/.ssh

(クライアント側で実施)
キーペアを作成する
$ ssh-keygen -t rsa
$ ssh-keygen -t ed25519
-t オプション:生成する鍵のアルゴリズムを選択するために鍵の種類(タイプ)を指定する
※鍵の保存場所やパスフレーズなどの入力を求められるが、何も入力せずにreturnでよい

作成した鍵を確認する
id_rsa(秘密鍵), id_rsa.pub(公開鍵)
またはid_ed25519(秘密鍵),id_ed25519.pub(公開鍵)
という2つのファイルが出来ていればOK

$ ls ~/.ssh
id_rsa
id_rsa.pub
(または)
id_ed25519
id_ed25519.pub

作成した鍵をLinuxサーバーに送る
$ cd .ssh
$ scp -P 12345 ~/.ssh/id_ed25519.pub user@xxx.xx.xxx.xxx:~
$ scp [オプション] コピー元パス 保存先パス
※パス:ユーザ名@サーバのホスト名(or IPアドレス):コピーしたいファイル、もしくは保存先のパス
ローカルのカレントディレクトリのファイル(test.txt)をリモートのホームディレクトリ直下へコピー
$ scp test.txt user@xxx.xxx.xxx.xxx:~/
サーバ側で受け取った公開鍵を~/.ssh/authorized_keysの下に移動する
$ cat ~/.ssh/id_ed25519.pub | ssh user@xxx.xxx.xxx.xxx 'cat >> .ssh/authorized_keys'

(サーバ側)
サーバ側で受け取った公開鍵を~/.sshの下に移動する
$ mv ~/id_ed25519.pub ~/.ssh
$ cat ~/.ssh/id_ed25519.pub >> authorized_keys
パーミッションを変更する
$ chmod 600 authorized_keys

(クライアント側)
パスワードなしでSSH接続できることを確認し、lsコマンドを実行してみる
$ ssh -i ~/.ssh/id_ed25519 user@xxx.xx.xxx.xxx
$ ls ~/.ssh

パスワード認証を不許可にする
$ vim /etc/ssh/sshd_config
PasswordAuthentication no
ChallengeResponseAuthentication no
sshを再起動する
$ sudo /etc/init.d/ssh restart
もしくは
$ sudo systemctl restart sshd

無事にパスワードなしでSSH接続できました🎵
ちなみに・・・

Discussion