Ubuntu Server にインストールされるOpenSSHはデフォルトでパスワード接続となっていますので、公開鍵認証に変更します。
SSHの接続テスト
まずは、パスワード認証を使って sshでログインできるかテストします。ssh ユーザ名@サーバアドレス
ログインできたら、公開鍵認証の設定を行うのでサーバから一旦ログアウトします。
exit
公開鍵認証の鍵の生成
続いて、ローカルのパソコンで認証に必要な鍵を接続元のパソコンで生成します。ssh-keygen -t rsa -f ~/.ssh/id_rsa_eccube
とすると、
~/.ssh/id_rsa_eccube (秘密鍵)
~/.ssh/id_rsa_eccube.pub (公開鍵)
の二つが生成されます。ここでは、「id_rsa_eccube」というファイル名にしていますが、生成のファイル名は何でもいいでしょう。
公開鍵をサーバにアップロード
次に scp を使用して、公開鍵 id_rsa_eccube.pub をサーバに転送します。scp .ssh/id_rsa_eccube.pub ユーザ名@サーバアドレス:.
これでサーバ側のユーザのホームディレクトリに id_rsa_eccube.pub がコピーされます。
SSHの公開鍵認証の設定
再度、sshでログインしリモートサーバの設定を行います。ssh ユーザ名@サーバアドレス~/.ssh/authorized_keys にさきほど scp でコピーしたファイルをリネームします。
さらに、公開鍵は自分しか読めないようにファイル権限を設定します。
mkdir ~/.ssh chmod 700 .ssh/ mv id_rsa_eccube.pub ~/.ssh/authorized_keys chmod 400 ~/.ssh/authorized_keys
そして、sshdの設定を公開鍵認証だけにします。/etc/ssh/sshd_configを以下のように編集します。
sudo vi /etc/ssh/sshd_config
# パスワード認証を切る PasswordAuthentication no # ssh1、ssh2両方に共通 # 公開鍵認証を有効にする PubkeyAuthentication yes # ssh2の場合 RSAAuthentication yes # ssh1の場合 AuthorizedKeysFile %h/.ssh/authorized_keys # 公開鍵の保存場所とファイル名
最後に、sshdを再起動します。
sudo service ssh restart
SSHの接続テスト
うまく設定が出来ているかを確認のため、まずは、さきほどできたパスワード認証ができなくなっている事を確認します。-o PubkeyAuthentication=no オプションは、ssh2の公開鍵認証を強制的に無効化するオプションです。
ssh -o PubkeyAuthentication=no ユーザ名@サーバアドレス
上記のコマンドでログインできないことを確認します。
最後に公開鍵認証でログインできるかを確認します。
ssh -i ~/.ssh/id_rsa_eccube ユーザ名@サーバアドレス
ログインできたら完了です。