Macでsshを使用する方法と、接続手順を簡単にする方法について解説します。
sshとは?telnetとの違いは?
ざっくり解説すると、、
ssh、telnet、いずれもクライアントからサーバーに接続し、サーバー上のコマンドをサーバー上で実行するためのアプリケーションです。
telnetとsshの主な違いは、セキュリティの強度です。sshは通信が暗号化されているためtelnetに比べてセキュアです。以前はtelnetが主流でしたが、昨今ではtelnetは使えず、sshのみに限定されたサーバが主流となってきています。
私が利用しているXサーバーもsshのみが利用可能です。
sshの接続方法は、
- パスワード認証
- 公開鍵認証
の二つがありますが、Xサーバーでは公開鍵認証だけが利用可能です。
sshって、なんだか面倒なようにも思いますが、最初に設定だけしてしまえば、あとは簡単に接続・利用が可能です。
必要なアプリケーションは?
ssh接続に必要なものは、
- クライアントアプリケーション
- 公開鍵
の2つです。
Macの場合、実はあらためてアプリのインストールは必要はなく、標準機能で接続できます。
『Launchpad』から『ターミナル』を探して、起動してみましょう。
テキストベースのコマンド入力が画面が開きますので、『ssh』と入力してみてください。
sshが動作することがわかります。
以下に実際にサーバーに接続するまでの手順を解説します。
サーバーとの接続まで
大まかな手順は以下のようになります。
- サーバー側の設定
- 公開鍵・秘密鍵の作成
- クライアントに秘密鍵を配置
具体的な手順をみていきましょう。(サーバは、Xサーバーの例、クライアントは、Mac OS Sierraの場合の手順です。)
サーバー側の設定
Xサーバーの『サーバーパネル』にログインします。
メニューの『SSH』-『SSH設定』を選択します。
状態が『ON』になっていない場合は、『ON』に変更します。
次に公開鍵・秘密鍵を作成します。
公開鍵・秘密鍵の作成
『公開鍵認証用鍵ペアの生成』タブを選択します。
パスフレーズの入力が求められますので、任意の文字列を入力します。設定したパスフレーズは忘れないようにしましょう。
生成ボタンを押すと、サーバー側に公開鍵が作成されるとともに、クライアント用の秘密鍵が作成され、自動的にダウンロードされます。
デフォルトでは、ダウンロードディレクトリに”サーバーID.key”というファイル名でダウンロードされます。
クライアントに秘密鍵を配置
Mac側の設定は、
- ssh用のディレクトリ作成
- 秘密鍵の配置
の2つを行います。
『ターミナル』アプリを起動します。ホームディレクトリ(/Users/ユーザ名)がカレントディレクトリになっていると思います。
このディレクトリの下に、『.ssh』というディレクトリを作成します。
また、ディレクトリの権限を700に変更しておきます。
mkdir .ssh chmod 700 .ssh
作成したディレクトリに、先ほど作成・ダウンロードした秘密鍵を配置します。
Finderアプリでファイルを移動してもいいですし、mvコマンドでファイルを移動してもいいです。
Finderアプリを使用する場合、.sshディレクトリはそのままでは表示されません。
先頭がドットから始まるディレクトリ・ファイルはシステム用として扱われるためです。
commmandキー+shiftキー+『.』(ドット)を押せば表示されるようになります。
こちらの記事も参考に。
さて、.sshディレクトリに配置できれば、次にファイル名の変更と権限変更を行います。
ファイル名は、”id_rsa”にリネームします。
mv ダウンロードしたファイル名 id_rsa chmod 600 id_rsa
実行してみる
以上で、設定は完了です。
サーバーに接続してみます。
ssh ユーザ名@接続ドメイン名 -p 10022
-pオプションは、ポート番号の指定です。Xサーバーの場合、sshは10022ポートと決まっているため、”10022″を指定しています。
実行するとパスフレーズの入力を求められます。
公開鍵を作成した際に決めて入力したパスフレーズを入力します。
すると、無事サーバに接続することができました。
$ ssh ユーザ名@xxxx.xsrv.jp -p 10022 Enter passphrase for key '/Users/<ユーザ名>/.ssh/id_rsa': Last login: Sun Feb 12 09:45:41 ・・・・・・・
接続手順を簡単に
ssh ユーザ名@接続ドメイン名 -p 10022
と毎回入力するのは面倒なので、簡単に接続できるようにコンフィグファイルを作成しておくと便利です。
.sshディレクトリに”config”というファイル名でテキストファイルを作成します。
configフィルの内容は以下のとおりです。
Host <ホスト名>:正式名称の必要はなく覚えやすいもの HostName XXX.xsrv.jp Port 10022 User <ユーザ名> IdentityFile ~/.ssh/id_rsa ServerAliveInterval 60 AddKeysToAgent yes UseKeychain yes
このファイルを作成しておくことで、sshコマンドの引数にホスト名を指定するだけで、サーバに接続することができます。
$ ssh <ホスト名> Last login: Mon Mar 20 14:40:03 ・・・・・
とても簡単になりました。
コンフィグファイルの下部の3行は、それぞれ以下の意味があります。
ServerAliveInterval :無通信の状態が続いても接続が切れないよう
AddKeysToAgent、UseKeychain :パスフレーズの入力を省略
いかがだったでしょうか。
やや、面倒に思われるかもしれませんが、最初の設定だけです。
参考していただければと思います。