リモートサーバーにSSH接続する設定手順まとめ

インフラ

こんにちは。Enjoy IT Life管理人の仁科(@nishina555)です。

リモートサーバー契約後にまずはやっておきたいのがSSH接続の設定です。
リモートサーバーにSSH接続できるようになると、リモートサーバーのファイルや設定を直接編集できるようになります。

今回はリモートサーバーにSSH接続できるようにするための方法について紹介をしたいと思います。
SSH接続には『パスワード認証』と『公開鍵認証』の2つの認証方法があるのでそれぞれ紹介します。

こんな方にオススメの記事です
  • リモートサーバーを契約している方
  • 公開鍵・秘密鍵の作成から配置までの手順について知りたい方

方法1: パスワード認証によるSSH接続

まずはパスワード認証によるSSH接続の方法について紹介します。

リモートサーバーにSSH接続する際に必要になる情報はパスワードを含め、以下の通りです。

SSH接続で必要な情報
  • IPアドレス or ホスト名
  • ユーザー名
  • パスワード
  • ポート番号

リモートサーバーの情報はサーバーの管理画面から確認しましょう。

例えばロリポップ!のレンタルサーバー場合は、『サーバーの管理・設定』→『SSH』と選択して表示される『SSHを有効にする』ボタンを押すとログイン情報が表示されます。

ロリポップのSSH設定 ロリポップのSSH接続を有効化する ロリポップのSSHログイン情報

sshコマンドは以下のようになります。

$ ssh [ユーザー名]@[IPアドレス or ホスト名] -p [ポート番号]
→ sshコマンド実行後『xxx@xxx's password: 』と聞かれるのでパスワードを入力してEnter

ポート番号について、デフォルトの22番を利用している場合は記載を省略できます。

初回接続の場合は『Are you sure you want to continue connecting (yes/no)?』と聞かれるので『yes』と入力します。

ログイン情報が正しければリモートサーバーにログインできます。
例えばnishinaというユーザー名でIPアドレス210.xxx.xxxのリモートサーバーにポート番号2200を利用してSSH接続する場合は以下のようになります。

### ssh接続
$ ssh nishina@210.xxx.xxx -p 2200

[nishina@210.xxx.xxx]$ 
→ リモートサーバーにログインできた

方法2: 公開鍵認証によるSSH接続

パスワード認証の次は公開鍵認証によるSSH接続の方法について紹介します。

公開鍵認証とはリモートサーバーの『公開鍵』とローカル環境の『秘密鍵』を利用した認証方法です。

ログイン情報を直接サーバーに送信することなく認証するため、パスワード認証よりもセキュアな認証方法です。
また、公開鍵認証を利用すればSSH接続する際に毎回ログイン情報を入力する手間も省けます。

公開鍵と秘密鍵のペアをローカルで作成する

まずはディレクトリの作成と移動をします。

### ~/.sshへ移動。ディレクトリが存在しなければ作成する
$ mkdir -p ~/.ssh && cd $_

次に公開鍵と秘密鍵のペアをssh-keygenコマンドで作成します。

$ ssh-keygen -t rsa
→ 『Enter passphrase (empty for no passphrase):』と聞かれるが何も入力せずEnterを押せばOK

-tは鍵のタイプを指定するオプションです。rsaの他にdsa、ecdsa、ed25519があります。

ssh-keygenコマンド実行後、id_rsaという名前の秘密鍵とid_rsa.pubという名前の公開鍵が作成されていればOKです。

なお、-fで鍵のファイル名を指定することもできます。
例えば以下のようなコマンドを実行するとtesttest.pubという鍵のペアが作成されます。 

$ ssh-keygen -f test -t rsa

公開鍵と秘密鍵のペアを複数作る場合は-fオプションを利用するとよいでしょう。

秘密鍵のパーミッションを変更する

秘密鍵のパーミッションは600に設定する必要があるので変更します。

$ chmod 600 id_rsa

公開鍵の情報をリモートサーバーに登録する

公開鍵の情報はリモートサーバーの~/.ssh/authorized_keysというファイルにコピーする必要があります。

ssh-copy-idコマンドを利用すればリモートサーバーにログインして直接~/.ssh/authorized_keysを編集する必要がないので簡単です。

ssh-copy-idコマンドは以下のように利用します。

$ ssh-copy-id -i [公開鍵] [ユーザー名]@[ipアドレス or ホスト名] -p [ポート番号]

例えば、以下のようになります。

$ ssh-copy-id -i ~/.ssh/id_rsa.pub nishina@210.xxx.xxx -p 2200

登録完了後、パスワードを聞かれることなくSSH接続ができるようになっていれば公開鍵認証の設定はOKです。

$ ssh nishina@210.xxx.xxx -p 2200

[nishina@210.xxx.xxx]$ 
→ パスワードなしでリモートサーバーにログインできればOK

SSHの設定ファイルを編集してSSH接続を簡潔にする

ここまでで公開鍵認証によるSSH接続ができるようになりました。
しかしSSH接続の際に、いちいちユーザー名とホスト名を入力するのは面倒です。

SSH接続には~/.ssh/configという設定ファイルが用意されており、これを利用することでsshコマンドを簡略化できます。

~/.ssh/config

Host blog
   Hostname 210.xxx.xxx
   User nishina
   IdentityFile ~/.ssh/id_rsa
   Port 2200

これで、ssh nishina@210.xxx.xxx -p 2200と入力していたものがssh blogと入力するだけでよくなります。

$ ssh blog

[nishina@210.xxx.xxx]$ 
→ ユーザー名とホスト名を簡略化してSSH接続できるようになる

まとめ

以上でSSH接続の設定方法の紹介を終わります。

今回のまとめ
  • SSH接続にはパスワード認証と公開鍵認証の2種類の方法がある
  • 公開鍵認証の場合はリモートサーバーの公開鍵とローカルの秘密鍵を利用して認証を行う
  • ssh-keygenで鍵のペアを作成し、ssh-copy-idで公開鍵の登録をする
  • .ssh/configファイルを利用することでsshコマンドが簡潔になる

この記事がいいなと思いましたらツイッター(@nishina555)のフォローもよろしくお願いします!