SSH接続設定

前提

OS: Ubuntu

PC: クライアント(SSH接続する側),サーバー(SSH接続される側)

IP: クライアント(192.168.0.10),サーバー(192.168.0.20

User: クライアント(dyuichi_client),サーバー(dyuichi_server

IPとUserはご自身の環境に合わせて変更してください.

サーバーPC側の準備

必要なパッケージのインストール.

sudo apt update
sudo apt install openssh-server

/etc/ssh/sshd_config を編集する.この時,PasswordAuthentication がコメントアウトもしくは yes になっていることを確認する.

この時点でパスワード認証が無効になっていると,公開鍵を送るのが少し面倒になる.

PasswordAuthentication yes
# または,コメントアウトされたまま(デフォルトは yes)
#PasswordAuthentication yes

編集したら,設定を読み込ませるためにSSHサーバーを再起動する.Ubuntuでのサービス名は ssh である.

sudo systemctl restart ssh

クライアントPC側の準備

鍵の生成

暗号のアルゴリズムは自由に決めてよいが,GitHubのドキュメントでも推奨されているように,今回は ed25519 を指定している.

ssh-keygen -t ed25519

キーの保存場所とパスワードを聞かれるが,自由に決めてどうぞ.パスワードは何も設定しないことが多い.

公開鍵の送信

公開鍵をサーバーPCに送信する.以下のコマンドで簡単に送信可能.

ssh-copy-id -i ~/.ssh/id_ed25519.pub dyuichi_server@192.168.0.20

-i に送信する公開鍵のパスを,その後ろに サーバーPCのユーザー名@サーバーPCのIP を指定する.

実行すると,サーバーPCのパスワードを聞かれるので,入力.

実行後,サーバーPCの ~/.ssh/authorized_keys に公開鍵とクライアントPCの dyuichi_client@hostname が追記されているはず.

確認

サーバーPCの /etc/ssh/sshd_config で,PasswordAuthenticationno にすることで,パスワード認証ではなく,SSH鍵で認証するようにする.

PasswordAuthentication no

編集後,再度 ssh サービスを再起動する.

sudo systemctl restart ssh

クライアントPCからSSHコマンドで接続を確認する.

ssh dyuichi_server@192.168.0.20

パスワード認証を無効にする前に,鍵で接続できることを別の端末で確認しておくとよい.公開鍵が正しく送れていない状態でパスワード認証を切ると,サーバーPCにSSHで入れなくなる.

~/.ssh/configの設定

~/.ssh/config にSSH接続先の設定を書いておくことで,コマンド入力が少し楽になる.今回のケースでは,以下のように書くとよい.

Host dyu_srv
    HostName 192.168.0.20
    User dyuichi_server

SSH接続したいときは,以下のように実行するとよい.

ssh dyu_srv