SSHで公開鍵接続をする(パスワードから解放されたい)

SSHでサーバーに接続する際にユーザー名、ホスト名を入れた後、パスワードをいちいち入力するのめんどくさいですよね。というか、強健なパスワードにしてると覚えているわけがないので、いちいちコピペするのもだるいし・・・そんなときに便利なのがRSA公開鍵認証!

これを使えば特定の端末からはいちいちパスワードを入力せずに顔パス接続が可能になります!

最近FaceIDなるものがあるので、顔パスって書くとほんとに顔パスっていう意味になっちゃうからややこしいですね。ここではFaceIDのことではありませんよ

目次

公開鍵/秘密鍵の作成

# 公開鍵/秘密鍵を作成する
ssh-keygen -t rsa

ssh-keygenではローカルのsshディレクトリに公開鍵/秘密鍵を作成します。

$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/xxx/.ssh/id_rsa):
Enter passphrase(empty for no passphrase):(パスワード)
Enter same passphrase again:(パスワード再入力)
Your identification has been saved in /Users/xxx/.ssh/id_rsa.
Your public key has been saved in /Users/xxx/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ユーザ名@ローカルホスト名
The key's randomart image is:
+---[RSA 2048]----+
|                 |
|                 |
|                 |
|                 |
|                 |
|                 |
|                 |
|                 |
|                 |
+---[RSA 2048]----+

パスフレーズ部分を入力すると接続時に公開鍵のパスフレーズを聞かれることになるので、パスフレーズを入力せずに鍵を作成します。

さて、ここでパスフレーズを設定しないことによるセキュリティの心配がありますが、これについては別記事にまとめます。

公開鍵をサーバーにアップロード

# 公開鍵をサーバーにアップロード
$ scp ~/.ssh/id_rsa.pub ユーザ名@ホスト名:/home/ユーザ名/.ssh/id_rsa.pub
# アップロードした公開鍵をauthorized_keysに追記
$ cat id_rsa.pub >> .ssh/authorized_keys

scpを使ってローカルに作成した公開鍵をサーバーのsshディレクトリにコピーします。

ここではセキュリティを高めすぎないところまでの内容にします。環境に応じてどの程度のセキュリティ度合いにするかは各自で判断してください。

接続できないとき

sshd_configの確認

# sshd_configを修正
RSAAuthentication yes # RSA認証の許可
PubkeyAuthentication yes # 公開鍵認証の許可
AuthorizedKeysFile .ssh/authorized_keys #公開鍵ファイルのパス

--- (おまけ) ---

# Passwordでのログインを無効化したいときは(きちんと管理された環境なら推奨)
PasswordAuthentication no

# rootでのSSHログインを許可しない場合は(推奨)
PermitRootLogin no
# sshd_configを修正したらssh再起動
$ service sshd restart (CentOS6の場合のコマンド)

.sshディレクトリやauthorized_keysのパーミッションを確認

# ~/.sshは700、authorized_keysは600じゃないと上手く動かないことがある
$ chmod 700 ~/.ssh (こっちは必須!)
$ chmod 600 ~/.ssh/authorized_keys

SSH接続時を楽ちんに管理する

.sshのconfigファイルにエイリアスを登録しておく

Host sample-server01(任意の名前)
  HostName ホスト名
  User ユーザー

Host sample-server02
...

こうしておけば、ssh接続する際に

$ ssh sample-server01

といった感じで接続できるので、ホスト名がIPアドレスで区別つけにくいなどの場合に便利。

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

目次