こんにちは。Enjoy IT Life管理人の仁科(@nishina555)です。
リモートサーバー契約後にまずはやっておきたいのがSSH接続の設定です。
リモートサーバーにSSH接続できるようになると、リモートサーバーのファイルや設定を直接編集できるようになります。
今回はリモートサーバーにSSH接続できるようにするための方法について紹介をしたいと思います。
SSH接続には『パスワード認証』と『公開鍵認証』の2つの認証方法があるのでそれぞれ紹介します。
- リモートサーバーを契約している方
- 公開鍵・秘密鍵の作成から配置までの手順について知りたい方
目次
方法1: パスワード認証によるSSH接続
まずはパスワード認証によるSSH接続の方法について紹介します。
リモートサーバーにSSH接続する際に必要になる情報はパスワードを含め、以下の通りです。
- IPアドレス or ホスト名
- ユーザー名
- パスワード
- ポート番号
リモートサーバーの情報はサーバーの管理画面から確認しましょう。
例えばロリポップ!のレンタルサーバー場合は、『サーバーの管理・設定』→『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
で鍵のファイル名を指定することもできます。
例えば以下のようなコマンドを実行するとtest
とtest.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)のフォローもよろしくお願いします!