きっとブログ
1234 words
6 minutes
SSH接続のための設定まとめ【サーバーでの事前準備〜鍵の生成〜登録〜接続まで】

はじめに#

この記事では、SSHのために必要なサーバーでの事前準備から鍵の生成・登録、そして実際に接続するところまでの手順を詳しく紹介します!

OSSHELLREMARKS
CLIENTmacOS Montereyzsh%で表記
SERVERUbuntu 20.04bash$で表記

実行環境

サーバーでの事前準備#

SSHのためにはサーバーをSSH接続に対応させる必要があります。

以下では、そのための事前準備の方法を紹介します。

openssh-serverのインストール#

サーバー側(今回はUbuntu)にopenssh-serverをインストールします。

sudo apt install openssh-server

openssh-serverが入っていないとSSHできないので、初めに必ずインストールしましょう。
インストールすることでsshのデーモン(sshd)が働き始めます。

SSHのステータスを確認#

以下のコマンドで確認できます。

sudo systemctl status ssh

サービスがactiveになっていればOKです。

 ssh.service - OpenBSD Secure Shell server
   Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
   Active: active (running) ・・・ <=  ここです
                            :

サービスが実行されていない場合#

以下のコマンドで実行できます。

sudo systemctl enable ssh
sudo systemctl start ssh

その他#

SSHを停止する

sudo systemctl stop ssh

SSHを無効にする

sudo systemctl disable ssh

鍵の生成〜登録〜接続#

これまでの設定でSSHのための事前準備が整いました。

以下では

  • クライアント側での鍵ペア(公開鍵&秘密鍵)の生成方法

  • サーバーへの公開鍵の登録方法

  • SSHでの接続方法

を紹介します。

鍵を生成する#

SSHに必要な鍵ペア(秘密鍵と公開鍵)は以下のコマンドで生成できます。

% ssh-keygen

-tを利用することで暗号の種類を指定することができます。

% ssh-keygen -t rsa
% ssh-keygen -t ecdsa
% ssh-keygen -t ed25519

-bを利用することで鍵長を指定することができます。

% ssh-keygen -t rsa -b 4096
% ssh-keygen -t ecdsa -b 384

rsaecdsaは鍵長を指定できます。
ed25519256bit固定のようです。

-Cを利用することで公開鍵の後ろにコメントをすることができます。

% ssh-keygen -t ed25519 -C ""

コメントの有無は認証には関係ありません。
-Cなしで鍵を生成するとusername@hostnameがコメントに設定されるようです。
プライバシーが気になる人は""でコメントをブランクにしても良いかもしれません。
逆に大人数で管理する等の都合でたくさんの公開鍵を管理するサーバーであればコメント有りの方が誰の鍵かわかって良いかも?

ssh-keygenを実行すると以下の文章が表示されます。

Enter file in which to save the key (/username/.ssh/id_ed25519):
Created directory '/username/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:

1行目:鍵ファイルの名前や作成場所を変える場合は入力しま
2行目:ディレクトリがなければ自動的に作られます
3, 4行目:パスフレーズを設定する場合は入力します

パスフレーズを設定することで安全性を高めることができますが、SSHするたびにパスフレーズを入力しなければいけません。
秘密鍵が安全に管理されており、パスフレーズの入力が面倒であれば、パスフレーズの設定は見送ってもいいかもしれません。

パスフレーズは後から変更することもできます。

% ssh-keygen -p -f ~/.ssh/id_ed25519

サーバーに鍵をコピー#

ssh-copy-idコマンドは以下のように書くことができます。

% ssh-copy-id ユーザー名@サーバーのipアドレス

サーバー側で鍵が書き込まれていることを確認#

lessコマンドをつかってファイルの中身を見ます。

less ~/.ssh/authorized_keys

閲覧を終了するには、escを押してから:qと入力してEnterを押します。

サーバーにSSH接続する#

sshコマンドは以下のように書くことができます。

% ssh -i 秘密鍵へのパス ユーザー名@サーバーのipアドレス

id_ed25519を使う場合は以下のようになります。

% ssh -i ~/.ssh/id_ed25519 user_name@xxx.xxx.xxx.xxx

パスフレーズを設定した場合は、sshコマンドを実行すると秘密鍵のパスワード入力が求められます。

SSH接続を切断する#

exitコマンドで切断できます。

ユーザー名@ホスト名:~$ exit

おわりに#

もし、以上の設定を行なってもSSH接続できない場合は、ファイアウォールによってSSH接続が拒否されているかもしれません。

Ubuntuでは、UFWを設定することでアクセスを制限することができます。
SSHは22番ポートに設定されていることが多いので、ファイアウォールの設定を確かめてみてください。

また、適切に設定することでサーバーの安全性を高めることができるので、余裕がある人は試してみてください。

UFWの設定方法

今回は以上です。

お読みいただきありがとうございました!