はじめに
この記事では、SSHのために必要なサーバーでの事前準備から鍵の生成・登録、そして実際に接続するところまでの手順を詳しく紹介します!
| OS | SHELL | REMARKS | |
|---|---|---|---|
| CLIENT | macOS Monterey | zsh | %で表記 |
| SERVER | Ubuntu 20.04 | bash | $で表記 |
実行環境
サーバーでの事前準備
SSHのためにはサーバーをSSH接続に対応させる必要があります。
以下では、そのための事前準備の方法を紹介します。
openssh-serverのインストール
サーバー側(今回はUbuntu)にopenssh-serverをインストールします。
sudo apt install openssh-serveropenssh-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 sshSSHを無効にする
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 384rsaとecdsaは鍵長を指定できます。ed25519は256bit固定のようです。
-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番ポートに設定されていることが多いので、ファイアウォールの設定を確かめてみてください。
また、適切に設定することでサーバーの安全性を高めることができるので、余裕がある人は試してみてください。
今回は以上です。
お読みいただきありがとうございました!


