【Linux】sshを鍵認証方式に切り替える

みんな大好きSSH,今回はそいつをパスワード認証方式から鍵認証方式へと変えちゃいたいと思います.

なんでかって?そっちの方が安全そうじゃない?鍵と錠が一致してないとログインが出来ないんだし

まぁパスワード認証もパスワードが分からなければログインできないけども.

一応それぞれの簡単なメリット,デメリットはこんな感じだと思う

パスワード認証方式:サーバのユーザとパスさえ知っていればログインできるが,それらが通信路に流れてしまう

鍵認証方式:通信路にパスなどが流れないが,初期設定が面倒

ってことで,本題に移ろう

サーバ側での準備

鍵を生成する

まずサーバ側で,今回使用する鍵を生成する.デフォルトだと暗号化方式がRSAで鍵長が2048bitになると思う.知らん.

$ ssh-keygen  Generating public/private rsa key pair. 
Enter file in which to save the key (/home/user/.ssh/id_rsa): /home/user/.ssh/sample #ファイル名を指定    
Enter passphrase (empty for no passphrase): password #空欄も可能 
Enter same passphrase again: password 
Your identification has been saved in /home/user/.ssh/sample. 
Your public key has been saved in /home/user/.ssh/sample.pub. 
The key fingerprint is: 
SHA256:oh******X+gwVvmzrl80Y+UMTjq6xD796U1tZoOc 
user@address The key's randomart image is: 
+---[RSA 2048]----+ 
|   .o+.          | 
|  ..=o..  .      | 
|   ++..  . .     | 
|  oo +  o . .    | 
|   +B .+S+ o     | 
| . oo++.= E      | 
|  o =. X +       | 
|   + =B *        | 
|  . =*+o .       | 
+----[SHA256]-----+ 
$ ll ~/.ssh/ 
合計 20 
-r--------. 1 user user 1694  8月 21  2018 Cocoa.pem 
-rw-r--r--  1 user user   96  1月 24  2019 config 
-rw-r--r--. 1 user user  194  8月 21  2018 known_hosts 
-rw-------  1 user user 1896  7月 28 19:36 sample 
-rw-r--r--  1 user user  409  7月 28 19:36 sample.pub

鍵の登録とアクセス権限の付与

次に,生成した鍵を登録する.これをしておかないと,クライアントからログインするときに結局パスワードを入力しないといけなかった気がする.

アクセス権限も適切なものに変更しておこう.

$ cat ~/.ssh/sample.pub > ~/.ssh/authorized_keys 
$ rm .ssh/sample.pub  
$ chmod 600 .ssh/authorized_keys  
$ chmod 700 .ssh

公開鍵を登録したら,そいつは削除しておこう.

クライアント側での準備

クライアントで秘密鍵を取得する

サーバ側で設定が終わったら,クライアントに秘密鍵を移動させる.scpでもsftpでもなんでもいい.

$ sftp user@address 
user@address's password: Connected to user@address. sftp> cd .ssh sftp> get sample Fetching /home/user/.ssh/sample to sample /home/user/.ssh/sample 100% 1896 2.0KB/s 00:00 sftp> exit
$ scp  user@address:.ssh/sample .ssh 
user@address's password:  
sample                                                        100% 1896    38.7KB/s   00:00 

接続してみる

鍵の指定には -iオプションを指定する

$ ssh user@address -i .ssh/sample

セキュリティを考える

今の状態だと,鍵を使用しなくてもパスワード認証でできてしまう.それじゃあ意味がないので,鍵を使用しないとログインできないように設定を変更する.

# vi /etc/ssh/sshd_confi

PubkeyAuthentication yes # 鍵認証を有効に
PasswordAuthentication no # パスワード認証を無効に
PermitRootLogin no # rootユーザとしてのログインを禁止(やらなくてもいい)

で,sshデーモンを再起動する

# service sshd restart

すると,パスワード認証によるsshログインができなくなる,はず.

$ ssh user@address
user@address: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).

おすすめ

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です