- 更新日: 2013年5月7日
- CentOS & Linux
SSH で公開鍵認証による接続の設定、Mac で ssh-keygen し公開鍵をサーバーに保存 〜 CentOS6
今回から、SSH 接続と iptables などセキュリティ関連の設定をまとめていきます。SSH 接続や iptables の設定はサーバーのセキュリティの基礎部分なのでしっかりと慎重に行う。まずは、SSH で公開鍵認証による接続の設定を行います。
私の場合、SSHクライアントは、Mac は iTerm2、Windows では TeraTerm を使っています。セキュリティ向上のため、SSH 接続において公開鍵と秘密鍵による認証の設定を行います。鍵の作成はサーバーでやるのはよろしくない。秘密鍵はサーバーに持たせないほうが良いためです。Mac(ローカル側)にて ssh-keygen コマンドを用いて公開鍵、秘密鍵を作成します。
このエントリーは、CentOS 6.4 インストール~設定手順の目次 の一部です。
Mac で ssh-keygen コマンドを用いて公開鍵、秘密鍵を作成
1 2 3 4 5 6 7 8 9 10 11 12 13 |
[mac ~]$ ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/Users/localuser/.ssh/id_rsa): /Users/localuser/.ssh/id_rsa # ここでパスフレーズを入力 Enter passphrase (empty for no passphrase): # 同じパスフレーズを確認のために入力 Enter same passphrase again: Your identification has been saved in /Users/localuser/.ssh/id_rsa. Your public key has been saved in /Users/localuser/.ssh/id_rsa.pub. The key fingerprint is: ..... |
Enter passphrase で、SSH クライアントからの接続時に要求されるパスフレーズを設定します。これは忘れないように控えておく。id_rsa が秘密鍵、id_rsa.pub が公開鍵となります。公開鍵(id_rsa.pub)のほうをサーバーに置きます。私の場合、作成した2つの鍵(秘密鍵と公開鍵)を USB メモリにコピーして移動させました。Windows の TeraTerm でも、この Mac で作った秘密鍵を使いたかったためです。よりセキュリティを高めるなら、Windows の TeraTerm でも別の鍵セットを作って、公開鍵を authorized_keys に追加したほうが良いかもしれない。
USB メモリを使って公開鍵をサーバーにコピー
Mac の ssh-keygen コマンドで作成した公開鍵を USB メモリに保存します。その後、USB メモリーをサーバー機に挿して、公開鍵をサーバーにコピーします。秘密鍵は絶対にサーバーに置かないように。USB メモリをサーバーのマシンに挿してマウント後、公開鍵のほうを SSH でログインするユーザーの ~/.ssh/authorized_keys に追加し、公開鍵を書き換えられないようにパーミッションを600に変更します。この作業は私はサーバー機ローカルにつないだディスプレイで行いました。
公開鍵認証を行う一般ユーザーでログイン後、以下のコマンドを実行。
1 2 3 4 5 6 7 8 9 10 11 12 |
$ sudo mkdir /mnt/usb $ sudo mount -t vfat /dev/sdb1 /mnt/usb/ $ ls /mnt/usb id_rsa id_rsa.pub $ mkdir ~/.ssh $ touch ~/.ssh/authorized_keys $ cat /mnt/usb/id_rsa.pub >> ~/.ssh/authorized_keys $ chmod 600 ~/.ssh/authorized_keys $ chmod 700 ~/.ssh/ $ sudo umount /mnt/usb/ |
root で行う場合は、# chown -R username:username /home/username/.ssh を忘れずに。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
# mkdir /mnt/usb # mount -t vfat /dev/sdb1 /mnt/usb/ # ls /mnt/usb id_rsa id_rsa.pub # mkdir /home/username/.ssh # touch /home/username/.ssh/authorized_keys # cat /mnt/usb/id_rsa.pub >> /home/username/.ssh/authorized_keys # chown -R username:username /home/username/.ssh # chmod 600 /home/username/.ssh/authorized_keys # chmod 700 /home/username/.ssh/ # umount /mnt/usb/ |
USB メモリをサーバーマシンから外したら、Mac に戻って SSH 接続確認。
1 2 3 4 5 |
[mac ~]$ ssh -i ~/.ssh/id_rsa username@centos # または [mac ~]$ ssh -i ~/.ssh/id_rsa username@192.168.1.2 |
とすると、初回接続時は、パスフレーズ入力を求めるダイアログボックスが表示されるので入力してOK。これでSSH接続確認できました。2回目以降はパスフレーズ入力は要求されません。
サーバーのホスト名で接続できない場合は、ホスト機のIPアドレスを直に指定してSSH接続を試みる。ホスト名で接続できない場合の原因は、十中八九名前解決ができないせいなので、名前解決の手っ取り早い方法として、Mac の /etc/hosts に以下の行を追加しておきます。
1 2 3 4 5 6 7 |
[mac ~]$ vi /etc/hosts 192.168.1.2 centos # これで以下のようにホスト名でもSSH接続できるようになるはず [mac ~]$ ssh username@centos |
scp を使って公開鍵をサーバーに転送する
scp を使って公開鍵をサーバーに転送する場合は以下。鍵セットを作成したローカル(Mac側)から scp コマンドを使って、公開鍵を転送。
1 2 3 4 5 6 7 8 9 |
[mac ~]$ scp /Users/localuser/.ssh/id_rsa.pub username@192.168.1.2: The authenticity of host '192.168.1.2 (192.168.1.2)' can't be established. RSA key fingerprint is 13:2e:09:fa:03:39:5e:35:86:2e:38:af:88:4e:6e:2f. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.1.2' (RSA) to the list of known hosts. Connection closed by 192.168.1.2 lost connection |
初めてsshやscp接続を試みる時は、サーバー公開鍵の fingerprint が確認される。確認後 yes で進みもう一回 scp コマンドを実行、パスワードを求められるのでユーザーのパスワードを入力。
1 2 3 4 5 6 7 8 9 |
[mac ~]$ scp /Users/localuser/.ssh/id_rsa.pub username@192.168.1.2: The authenticity of host '192.168.1.2 (192.168.1.2)' can't be established. RSA key fingerprint is d7:b0:e0:65:f4:cd:af:ba:e9:81:61:b4:14:5e:af:2a. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.1.2' (RSA) to the list of known hosts. username@192.168.1.2's password: id_rsa.pub |
これで、サーバー側へ公開鍵が渡されたので、サーバーに入ったあと公開鍵の設定を行います。
1 2 3 4 |
[mac ~]$ ssh username@192.168.1.2 username@192.168.1.2's password: |
ここでは、まだ公開鍵認証は有効になっていないので、普通にユーザーのパスワードを入力してSSH接続。以降ログインした一般ユーザーで作業。
1 2 3 4 5 6 7 |
$ mkdir ~/.ssh $ touch ~/.ssh/authorized_keys $ cat ~/id_rsa.pub >> ~/.ssh/authorized_keys $ chmod 600 ~/.ssh/authorized_keys $ chmod 700 ~/.ssh/ |
cat で追加しておくと複数の公開鍵を1つのファイルの保存することができ、複数の鍵セットを利用できる。アクセス権(パーミッション)を変更しているのは公開鍵の改ざんを防ぐためです。
ここまでできたら一旦ログアウトして SSH で再接続すれば、公開鍵認証による接続が可能となります。
1 2 3 |
[mac ~]$ ssh -i ~/.ssh/id_rsa username@192.168.1.2 |
- CentOS & Linux の関連記事
- Job for nginx.service failedのNginxエラー
- upstream sent too big header while reading response header from upstream(Nginx/Rails)
- Can’t get information about user clamav(clamdエラー)
- STDERR: Exception in thread “main” java.lang.InternalErrorエラー
- Linuxサーバー容量を確認するコマンドdf,duをマスターする!
- rmでファイル削除後にdf -hで容量が減らない時の対処(Linux)
- Apacheをローカルネットワークのみに公開にする
- logwatchからのメールが来ないと思ったら…
- Linuxサーバの負荷や使用率を調査するコマンドと手順
- Bashの脆弱性もう一件CVE-2014-7169に対するパッチ適用
Leave Your Message!