【Linux】SSHの鍵方式を設定してログインを制限する

今までやろうと思ってやらなかった設定。社内からのアクセスのみに制限したい場合はIP制限の方が簡単。やり方は前の記事を参考に。

外部からのアクセスをコントロールしたい場合は鍵方式に変更する。公開鍵暗号方式を詳しく知りたい場合はwikipediaを読む。

環境はCentOS 5.3、クライアントはTera Term

まずはSSHサーバーの設定ファイルを編集してパスワードでログインするのを禁止する。
# vi /etc/ssh/sshd_config

PasswordAuthentication no

# /etc/rc.d/init.d/sshd restart

サーバー側で秘密鍵と公開鍵を作成する。

# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):(Enter)
Enter passphrase (empty for no passphrase):(パスフレーズを入力)
Enter same passphrase again:(もう一度)
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.

ホームディレクトリに.ssh/id_rsa(秘密鍵)とid_rsa.pub(公開鍵)が作成された。公開鍵を設定する。
# cd .ssh/
# cat id_rsa.pub >> authorized_keys
# chmod 600 authorized_keys
# rm -f id_rsa.pub

authorized_keysは固定。秘密鍵をクライアントに持ってくる。

あとはこの秘密鍵を使ってクライアントからアクセスしてみる。

image

ポート(フォイヤーウォール)の設定を忘れずに。hosts.denyしている場合はそっちの設定も忘れずに。

ちなみに鍵の生成はTera Termを使っても出来る。Poderosaを使っている場合はこちらのサイトを参考に。

image

鍵の種類は「RSA2」。鍵を生成した後は公開鍵だけサーバーにコピーしてさっきと同じように設定する。

こっちの方が秘密鍵をネットワーク越しに移動しないので安全。

Tera Termを使う理由はファイルの移動が簡単にできるから。

image

image

 

<関連記事>

Poderosaの秘密鍵をTeraterm用に変換する
【Linux】hosts.allowとhosts.denyの設定