さくらのVPSにSSHでログインする


はじめに

さくらのVPSにUbuntu16.04 LTSをISOイメージインストールの方法でインストールするの続きです。OSをインストールしてからローカル(自分のパソコン)の端末(Macでいうターミナル)を用いてSSH接続ができるまでの流れを書いていきます。

環境

さくらVPSサーバー(OSはUbuntu16.04 LTS)
ローカルでは仮想マシン(Virtualbox)下でUbuntu14.04 LTSをインストールしていてそこの端末上でsshなどのコマンドを打っている。

初期段階

OSのインストールが終わったあと端末上でssh接続しようとしました。
ssh -l root IPアドレス
のコマンドを打ちました。IPアドレスは契約した後に受信したメールに書いてありました。
しかしこれでは接続ができませんでした。というよりずっと処理中でエラーメッセージすら吐かなかったです。

原因

契約したサーバ側でSSHサービス(sshd)が起動していなかった。sshdが起動していないとsshができないのです。カスタムOSインストールでUbuntuを入れたときは分かりませんが、ISOイメージインストールでUbuntu16.04 LTSを入れたときはsshdが起動していないみたいです。
前回のさくらのVPSにUbuntu16.04 LTSをISOイメージインストールの方法でインストールするで新しくOSをインストールしたので、そこで決めたユーザー名とパスワードでログインしなければいけなかった。

基礎知識

設定に入る前に少し知識を洗っておきましょう。

SSHとは

ネットワーク通信(ここではローカル側とサーバー側)を暗号化してくれるプロトコル。

OpenSSHとは

SSHプロトコルを用いてネットワーク通信を行うソフトウェア。

ローカルからサーバー側にSSHでログインするには

ホスト名とユーザー名の二つで認証を行う必要があります。その認証にあたって必要なことは具体的には以下の事です。
1. ローカル側にサーバーのホスト公開鍵を登録する
これは自動的にしてくれるので手動で何かしなくてもいいです。
2. ローカル側の公開鍵をサーバーに登録する
これは自動ではないので後述しますがコマンドを入力してやります。

2はユーザー認証に使うのですが、ローカル側の公開鍵をサーバーに登録せずにパスワード(OSインストールしたときに登録したパスワード)でユーザー認証をすますことも可能です。ただし、パスワード認証はパスワードが特定されて情報が漏洩する可能性が高いため、パスワード認証はあまり推奨できません。

SSHの設定

まず、VNCコンソールを起動してその後に、sshdデーモンの設定ファイル(/etc/ssh/sshd_config)を開きましょう。

ユーザー認証を、パスワード認証で許可する方法

  • PasswordAuthentication yesの文を追加しましょう。
  • ファイルを保存して再起動しましょう。(sudo rebootとコマンドを打ってください。)

これで、パスワードを用いて認証ができるようになりました。
次にローカル側で端末を開きます。そしてその端末上で
ssh ユーザー名@ホスト名 と打ちましょう。これでつながったはずです。
(以後VNCコンソールでなくてもローカル側でsshコマンドを打てばサーバーに接続できるようになった。)
ポート番号に関しては先ほど入力したポート番号です。ユーザー名はさくらのVPSにUbuntu16.04 LTSをISOイメージインストールの方法でインストールするで登録したユーザー名です。このコマンドを入力すると、パスワードが求められるのですが、これも前回登録したパスワードを用いてください。

ユーザー認証を、公開鍵で許可する方法

パスワード入力は先述の通り、セキュリティー上の問題があるのでなるべく使わない方がよいとされていて公開鍵を用いるこっちの認証方法の方がよくとられます。ここからはローカル側とサーバー側でややこしくなりますがついてきてください。

流れ

  • 公開鍵の作成(ローカル側) ローカル上でssh-keygen -t rsaと入力しましょうenterキーを押していると~/.ssh/というディレクトリができてそこにid_rsaid_rsa.pubができるはずです。
  • 公開鍵をサーバー側にのっける(sftp) まずローカル側で~/.ssh/ディレクトリに移動して、sftp ユーザー名@ホスト名とコマンドを打って、id_rsaid_rsa.pubputしてください。
  • サーバーにのっけられた公開鍵を登録する(サーバー側) sshでサーバーに接続した後に、ローカル側で転送されたid_rsaid_rsa.pub~/.ssh/ディレクトリに移動させた後そのディレクトリ下でcat id_rsa.pub >> authorized_keysと打ってください。これで公開鍵が登録されたことになります。また、パスワード認証をするのをやめたいので、/etc/ssh/ssh_configファイルのPasswordAuthentication yesをコメントアウトさせておきましょう。
  • 公開鍵を認証エージェントに登録する(サーバー側) 認証エージェントというのは何かという説明の詳細はここでは省きますが簡単に言うならば、いちいちユーザーが秘密鍵を作るのを省略してくれるデーモンの事です。~/.ssh/ディレクトリの下でssh-agent bashとコマンドを打ちましょう。そのあとは
    1. ssh-add // 認証エージェントに秘密鍵を登録する
    2. exit // 認証エージェントからログアウトする ###結果 以上によって、ローカル側からssh ユーザー名@ホスト名と入力すると、パスワード認証を求められずに公開鍵認証を用いて、ssh接続できるようになりました。

次回

次はセキュリティーの設定をやっていこうと思います。

参考

さくらのVPSにUbuntu 16.04をインストールして初期設定する