さくらVPS上のサーバーにssh接続する
花壇のお花が綺麗です。
自分用の覚書としてメモしています。
目的
- ローカル環境からリモートでサーバー操作を安全に行うための設定。
- 初期設定の22番ポートから任意のポート番号に変更を行う。
- リモート接続するときに、都度パスワード入力作業を省略する。
環境
手順
まずは、リモート側(さくらVPSのVNCコンソール)で作業します。
sshをインストールする
# aptitude update # aptitude install ssh
設定ファイルをコピーしバックアップを取る
やってもいいしやらなくてもOK
# cp /etc/ssh/sshd_config /etc/ssh/sshd_config.org
ssh設定の変更のためsshd_configファイルを編集します。
$ sudo vi /etc/ssh/sshd_config
設定を書き換えます。(編集のやり方を忘れた場合⇨)
viコマンドについて詳しくまとめました 【Linuxコマンド集】
まずはrootユーザーのログインを禁止するためPermmitRootLoginをnoに変更します。
PermmitRootLogin no
編集が終わったら、変更を反映させるために再起動します。(再起動しないと反映されません)
# /etc/init.d/ssh restart
rootユーザーのログインを禁止できているか確かめます。 クライアント側(私の場合はMac)からssh接続してみます。 設定がきちんとできていれば、rootユーザーではログインできず、別の設定したユーザーからはログインできるはずです。
# rootユーザーではssh接続できない ❯ ssh root@000.000.000.000 root@000.000.000.0000: Permission denied (publickey). # 別のユーザーではssh接続できる ❯ ssh username@000.000.000.000 username@000.000.000.000's password: #パスワードを入力 # 抜ける場合は「exit」か「logout」 username@ik0-000-00000:~$ exit
ユーザー認証用の鍵(キーペア)を作成する このまま放置するとセキュリティが甘すぎるので、公開鍵認証を設定します。 さくらVPS(VSCコンソール)で作業します。
$sudo vi /etc/ssh/sshd_config #パスワード認証の許可 PasswordAuthentication yes #チャレンジレスポンス認証を許可 ChallengeResponseAuthentication yes # 設定を反映する $ /etc/init.d/ssh restart
さくらVPS(VSCコンソール)で作業します。
# ディレクトリの作成 $ mkdir ~/.ssh # 読込・書込・実行を許可する $ chmod 700 ~/.ssh
sshフォルダのパーミッションを700にするのは、ディレクトリのアクセス権限を本人しか読み書きできない権限(700)にするという意味です。
Macターミナルで操作 鍵を作成します。
$ ssh-keygen -t rsa
鍵が作成されているかを確認します。
$ ls ~/.ssh/ id_rsa id_rsa.pub
これで.sshフォルダの中に、 id_rsa(秘密鍵)とid_rsa.pub(公開鍵)というファイルが作成されています。
ちなみに id_rsa はRSA(※1)の鍵を表すファイル名です。 (※1)RSAとは...Rivest Shamir Adlemanの略。公開鍵の暗号化の一種。Rivestさんと Shamir さんとAdlemanさんが作った暗号で、解読の難しさから、さまざまな場面で使用されている。
Macで作った公開鍵をさくらサーバーへ送信します。鍵の名前はauthorized_keysです。
$ scp ~/.ssh/id_rsa.pub username@000.000.000.000:~/.ssh/authorized_keys
さくらVPS(VSCコンソール)で作業します。 公開鍵の設定ファイル(authorized_keys)のパーミッションを変更します。
$ cd ~/.ssh/ $ chmod 600 authorized_keys
なぜ600という数字なのかというと、パーミッション(権限)は公開鍵の場合は600か400になっている必要があります。権限を600にするか400にするかは、どちらでも構いません。600の場合はファイルの所有者に読み取り、書き込み権限が付きます。 400にした場合は、読み取り権限のみが付きます。
$ sudo vi /etc/ssh/sshd_config
#ポート番号を指定。(※2) Port <ポート番号> #パスワード認証を禁止 PasswordAuthentication no #チャレンジレスポンス認証を禁止 ChallengeResponseAuthentication no
設定を反映する
$ /etc/init.d/ssh restart
(※2)この時、ポート番号の前についている#を消し忘れないように!ついたままだと反映されません。(私はこれに小1時間気づかず悩みました。。。)
Macターミナルで操作 無事接続ができれば、認証鍵でのssh接続は完了です。
# ポート番号を指定してログイン $ ssh -p 54321 username@000.000.000.100