その他

【OpenSSH】特定ファイルをssh接続で保護する

この記事は約4分で読めます。

implの藤谷です。
opensshのキーペアを利用して、ファイルをssh接続で安全に管理する方法を解説します。

openssh用ライブラリのインストール

キーペアの生成にはopenssh-serverを使用します。

$ yum install openssh-server

yumにインストールされているか確認

$ yum list installed | grep openssh

openssh.x86_64                      8.7p1-33.el9                @anaconda
openssh-server.x86_64               8.7p1-33.el9                @anaconda

キーペア生成とファイル操作まで

keygenでのキーペア生成

ssh-keygenコマンドを使用してキーペアを生成します。
キー名はranble-keyにしておきます。

  • -t
    生成するキーの種類を指定。今回はras方式
  • -b
    キーのビット長を指定
  • -f
    キー名を指定
$ ssh-keygen -t rsa -b 4096 -f ~/.ssh/ranble-key

Generating public/private rsa key pair.
SHA256:dsMedsQeTnRHITvAW4+Sd8to08iXzc06iRsaPAhBhus
The key's randomart image is:
+---[RSA 4096]----+
|     .o   .....o+|
|    .o     +.oo. |
|     ..     Ooo  |
|    .  . . O +.o |
|   .  . S * B *o=|
|    E  o * + * *=|
|        . = o.oo |
|           +..+  |
|          . .. . |
+----[SHA256]-----+

~/.ssh/ にキーペアが作成されました。
公開鍵暗号方式の実装の為、秘密鍵と公開鍵のキーペアになっています。

  • ranble-key(秘密鍵)
    データの暗号化と復号、デジタル署名等に使用されます
  • ranble-key.pub(公開鍵)
    公開可能で、クライアントからの接続要求に対応する秘密鍵が所有者のものであることの検証に使用されます。
$ cd ~/.ssh
$ ls
ranble-key  ranble-key.pub
$ cat ranble-key

-----BEGIN OPENSSH PRIVATE KEY-----

// キーの値

-----END OPENSSH PRIVATE KEY-----
$ cat ranble-key

ssh-rsa 
// キーの値

txtファイル作成

検証用にhello.txtファイルを作成します。
中身はhello worldと書いているだけです。

$ vim hello.txt

// テキストを追記

$ ls

hello.txt

$ cat hello.txt

hello world

ファイル暗号化

hello.txtの暗号化を行います。
opensslコマンドを使用し、暗号化対象のファイルと、暗号化後のファイル名を指定しています。

$ openssl aes-256-cbc -in hello.txt -out encrypted.txt

$ ls 

hello.txt encrypted.txt

暗号化後のファイルを確認します。
catコマンドで見てみると暗号化されていることがわかります.

$ cat encrypted.txt

��lted__�
  ��Gl�@P����!�d��

ファイル復号

暗号化されたencrypted.txtを復号します。
encrypted.txtがデコードされた状態のdecrypted.txtを作成します。

$ openssl aes-256-cbc -in encrypted.txt -out decrypted.txt

$ ls 

hello.txt encrypted.txt decrypted.txt
$ cat decrypted.txt

hello world

暗号化前と同じ状態に復号されています。
以上の手順で、ファイルを暗号化したり復号したりで安全に管理することができます。

終わりに

今回は以上になります。
ここまで読んでいただき、ありがとうございました。