SSHのキーペア作成 ~ 公開鍵のコピー ~ リモートサーバへの接続まで

はじめに

ssh接続の覚書です。
毎回忘れるたびに調べるのが面倒なのでまとめました。
最低限、用意するのは以下の通りです。

  • server1(EC2)…ssh接続される側(sshサーバ)
  • server2(EC2)…ssh接続する側(sshクライアント)
  • セキュリティグループ…server1には22portを開けておきましょう。

早速始めましょう。

事前準備

実行対象: server1(sshサーバ)

sshd_configでパスワード認証を有効化

# パスワード認証の有効化ディレクティブをアクティベート
sed -i -r 's/#(PasswordAuthentication yes)/\1/' /etc/ssh/sshd_config 

# パスワード認証無効化ディレクティブをコメントアウト
sed -i 's/PasswordAuthentication no/#&/' /etc/ssh/sshd_config

# sshdサービスを再起動して設定反映
systemctl restart sshd 

ec2-userのパスワード設定

# パスワード認証用のパスワードを設定する。ssh-copy-idで公開鍵をコピーする際に求められる。
passwd ec2-user 

一応の確認

# 今回の接続先ユーザはec2-userとする
su - ec2-user

# パーミッションが600であることを確認する
ls -lrt ~/.ssh/authorized_keys

# まだ公開鍵は登録されていないことを確認する
cat ~/.ssh/authorized_keys

実行対象: server2(sshクライアント)

key-pairを作成

# 公開鍵と秘密鍵のペアを作成する。
ssh-keygen

# 公開鍵(644)と秘密鍵(600)のパーミッションを確認する。
ls -rlt ./.ssh

以下、ssh-keygenの実行例。

※ Enterで保存場所やパスワード設定をスキップできる。
※ 鍵はサーバもろとも削除済みですのでご心配には及びません。

[root@ip-10-0-2-48 ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:ygRCNc1VP9vJ97pHvqdkNRFOeykuFpf9YOvZvKtGvYE root@ip-10-0-2-48.ap-northeast-1.compute.internal
The key’s randomart image is:
+—[RSA 2048]—-+
| ..oo …. o |
| . .o . = +|
| . . .o+o*.|
| . . +.++|
| . S o..B.+|
| o . . .E O+|
| o . =o|
| + o=|
| ..=B+|
+—-[SHA256]—–+

公開鍵をserver1にコピー

# 公開鍵をリモートサーバにコピーする。
ssh-copy-id ec2-user@${target_host}

以下、実行例

[root@ip-10-0-2-154 ~]# ssh-copy-id ec2-user@10.0.2.198
/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
The authenticity of host ‘10.0.2.198 (10.0.2.198)’ can’t be established.
ECDSA key fingerprint is SHA256:fqlyeI9tO9CPvpTc7wv/l2A/jSDeltY/7wIc9ZXYv9Y.
ECDSA key fingerprint is MD5:d6:8b:5f:6b:90:ff:5d:be:d2:7a:90:cc:68:37:7f:7f.
Are you sure you want to continue connecting (yes/no)? yes
/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed — if you are prompted now it is to install the new keys
ec2-user@10.0.2.198‘s password:

Number of key(s) added: 1

Now try logging into the machine, with: "ssh ‘ec2-user@10.0.2.198’"
and check to make sure that only the key(s) you wanted were added.

ssh接続

実行対象: server2(sshクライアント)

ssh接続

# ssh接続する
ssh ec2-user@${target_host}

以下、実行例

[root@ip-10-0-2-154 ~]# ssh ec2-user@10.0.2.198
Last login: Sat Dec 23 08:21:36 2023
[ec2-user@ip-10-0-2-198 ~]$

コピーできているかもみてみましょう

# authorised_keysファイルを確認してみる(きっとあります)
cat ~/.ssh/authorized_keys

補遺 – パーミッションについて

ファイル/ディレクトリ パーミッション 数値表記
.ssh/ ディレクトリ rwx------ 700
authorized_keys ファイル rw------- 600
公開鍵(例:id_rsa.pub rw-r--r-- 644
秘密鍵(例:id_rsa rw------- 600
Last modified: 2023-12-23

Author