Macからリモートサーバーへssh接続する
はじめに
僕は現在「フィヨルドブートキャンプ」というプログラミングスクールでプログラミングを勉強中です。
bootcamp.fjord.jp その中で、今回のタイトルであるリモートサーバーへのssh接続を自分で設定するプラクティスがあり、復習もかねてまとめておこうと思います。
実行環境
やりたいこと
- DebianへMacからssh接続する。
- 接続する際の設定
- ポートをデフォルトの22から変更する。
- Rootユーザーでのログインを禁止する。
- パスワードログインの禁止、公開鍵でのログインのみできるようにする。
手順
サーバー側
- sshのインストール。
$ sudo aptitude update $ sudo aptitude install ssh
- 設定ファイルのバックアップを取り、設定ファイルを開く。以降、設定ファイル内の書き換えを列挙していく。
$ sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.org $ sudo vi /etc/ssh/sshd_config
#Port 22 ↓ Port 任意の番号
- rootユーザーでの接続を禁止する。
#PermitRootLogin yes ↓ PermitRootLogin no
- パスワードログインの禁止
#PasswordAuthentication yes ↓ PasswordAuthentication no
- 公開鍵でのみの接続をする設定。以下の部分のコメントアウトを外す。
RSAAuthentication yes
は最初から設定ファイルになかったため自分で記入した。
#PubkeyAuthentication yes #AuthorizedKeysFile .ssh/authorized_keys #ChallengeResponseAuthentication no #UsePAM yes ↓ PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys ChallengeResponseAuthentication no UsePAM yes RSAAuthentication yes
ちなみに書き換えたこれらの表記の意味は以下の通り。
- PubkeyAuthentication...公開鍵認証の許可するかどうか。
- AuthorizedKeysFile...公開鍵の保存場所を指定。
- RSAAuthentication...RSA認証の許可するかどうか。
- ChallengeResponseAuthentication...チャレンジレスポンス認証の許可するかどうか。
- UsePAM ...PAMを使うかどうか。
ここまで設定を変更したら設定を反映させるため一度sshを再起動する。
$ sudo /etc/init.d/ssh restart
クライアント側
$ mkdir ~/.ssh $ chmod 700 ~/.ssh $ cd ~/.ssh $ ssh-keygen -f client_rsa -t rsa -b 2048
- クライアントにキーペアを登録
$ ssh-add -K ~/.ssh/id_rsa
- 出来た公開鍵(id_rsa.pub)をリモートサーバー側へ登録しますが、今回はコピペで対応しました。
id_rsa.pub
を開いて内容をコピー。
サーバー側
- クライアント側で作成した公開鍵を登録する。
.ssh
ディレクトリがサーバー側にないことを仮定してディレクトリ作成から行う。.ssh
ディレクトリがあればディレクトリの作成は不要。.ssh
ディレクトリにauthorized_keys
ファイルを作成し、コピーした公開鍵の内容を書き込む。
$ mkdir ~/.ssh $ chmod 700 ~/.ssh $ cd ~/.ssh $ touch authorized_keys
- 設定は以上。クラアント側から接続をしてみる。
$ ssh -p 設定したポート番号 サーバーのユーザー名@サーバーのIPアドレス
接続できればOK。