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 で,PasswordAuthentication を no にすることで,パスワード認証ではなく,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