ssh接続を便利にする

Tips

はじめに

SSH でサーバに接続するとき、毎回パスワードを入力するのは面倒です。また、パスワード認証は辞書攻撃やブルートフォース攻撃に対して脆弱という側面もあります。

この記事では、SSH の鍵認証を導入して接続を便利かつ安全にする方法をまとめます。具体的には以下の内容を紹介します。

  • SSH 鍵ペアの作成
  • 公開鍵をサーバに登録する
  • ~/.ssh/config で接続先をまとめる
  • ssh-agent でパスフレーズ入力を省略する

SSH 鍵ペアの作成

ssh-keygen コマンドで秘密鍵と公開鍵のペアを生成します。

ssh-keygen -t ed25519 -C "your_comment"
  • -t ed25519 : 鍵の種類を指定します。Ed25519 は現在推奨されているアルゴリズムです。RSA を使う場合は -t rsa -b 4096 とします。
  • -C : 鍵に付けるコメントです。登録後にどの鍵か識別しやすくなるため、クライアントのホスト名やユーザ名などを入れておくと便利です。

実行すると保存先とパスフレーズを聞かれます。

Enter file in which to save the key (/home/user/.ssh/id_ed25519):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:

保存先はデフォルトのまま Enter で問題ありません。パスフレーズは設定しておくと、万が一秘密鍵が漏洩しても悪用されにくくなるため、より安全にしたい場合は設定することをおすすめします。

生成後、~/.ssh/ に以下の2ファイルが作成されます。

ファイル内容
id_ed25519秘密鍵。絶対に外部に公開しないこと
id_ed25519.pub公開鍵。サーバに登録するファイル

公開鍵をサーバに登録する

ssh-copy-id を使う方法(推奨)

ssh-copy-id コマンドを使うと、公開鍵の登録を簡単に行えます。

ssh-copy-id -i ~/.ssh/id_ed25519.pub user@hostname

このコマンドはリモートサーバの ~/.ssh/authorized_keys に公開鍵を追記してくれます。

手動で登録する方法

ssh-copy-id が使えない場合は手動で行います。

# 公開鍵の内容をコピー
cat ~/.ssh/id_ed25519.pub
# 表示された公開鍵の内容をコピー

# サーバにログインしてから authorized_keys に追記
mkdir -p ~/.ssh
chmod 700 ~/.ssh
echo "公開鍵の内容をここにペースト" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

~/.ssh/authorized_keys のパーミッションが適切でないと鍵認証が失敗する場合があります。

  • ~/.ssh : 700
  • ~/.ssh/authorized_keys : 600

接続確認

登録後、鍵認証で接続できるか確認します。

ssh user@hostname

パスワードが聞かれずにログインできれば成功です。 鍵作成時にパスフレーズを設定している場合は、鍵のパスフレーズを入力する必要があります。

~/.ssh/config で接続先を管理する

複数のサーバを管理する場合、毎回 ssh user@hostname のように入力するのは手間ですし、似たIPのサーバが複数ある場合は間違いやすくなります。 ~/.ssh/config に設定を書いておくとエイリアスで接続できるようになり、さらにポートの指定や使用する鍵の指定も簡単になります。

Host myserver
    HostName 192.168.1.100
    User     shutils
    Port     2222
    IdentityFile ~/.ssh/id_ed25519

設定後は以下のコマンドだけで接続できます。

ssh myserver

よく使うオプションを以下にまとめます。

オプション内容
Hostエイリアス名。ssh <Host名> で接続する
HostName接続先のホスト名または IP アドレス
Userログインユーザ名
Portポート番号(省略時は 22)
IdentityFile使用する秘密鍵のパス

また、Host * で全ての接続に共通する設定を記述できます。

Host *
    ServerAliveInterval 60
    ServerAliveCountMax 3

ServerAliveInterval を設定しておくと、接続が切断されにくくなります。

まとめ

SSH 鍵認証を使うことで、パスワード入力の手間をなくしつつ、セキュリティも向上させることができます。

やることコマンド / ファイル
鍵ペアの生成ssh-keygen -t ed25519
公開鍵の登録ssh-copy-id user@hostname
接続先の管理~/.ssh/config

一度設定してしまえば、その後は ssh myserver の一言で接続できるようになります。ぜひ試してみてください。

コメント

タイトルとURLをコピーしました