SSHコマンドがだるすぎる、、、公開鍵認証&ssh configで楽にしましょう

2018年10月7日

こんにちは!

サーバにSSH接続するときのコマンド、だるいですよね。

例えばどこかのレンタルサーバを使っているとすると、SSH接続するときのコマンドは以下みたいな感じじゃないでしょうか。

ssh xxxserver-abcxyz@ssh123.xxxserver.jp -p 2222

だるすぎる、、、

この記事では、公開鍵認証とssh_configにより、より簡易なコマンドでSSH接続できるようにする方法を紹介します。

最終的に以下ようなコマンドでSSH接続できるようになります。

ssh xxxserver

楽~~~!

ついでにタイムアウトで接続が切れないようにする設定も入れます。

※本記事はmacOSを使った手順です。

パスワード打つのがだるい、、、→公開鍵認証を使いましょう

レンタルサーバなんかだと自動生成された複雑なパスワードしか使えない場合があります。覚えてなんかいられないので、いちいち確認したりしないといけないです。

公開鍵認証にすることで、接続元の端末に保存した鍵を元にログインできるようになります。

複雑なパスワードを入力しなくて済むし、パスワードによる認証よりもセキュアですので、利用しない手はない!ですね。

手順1. 公開鍵と秘密鍵ペアの作成

ターミナルを開いて、以下のコマンドを実行します。

ssh-keygen -t rsa -b 4096
オプションの説明
-t: 鍵タイプ(アルゴリズム)を指定します。typeのt。
-b: 鍵のサイズ(ビット数)を指定します。bitのb。
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/takaki/.ssh/id_rsa):

鍵ファイルの保存先を聞かれます。デフォルト(ホームディレクトリ/.ssh/)で問題ないと思うので、そのままEnterを押します。

Enter passphrase (empty for no passphrase):
Enter same passphrase again:

パスフレーズを聞かれます。ここでパスワードを入力すると、作成した秘密鍵を使用する際に、パスワードの入力が必要になります。

ファイルの流出に備えて設定しておくことをお勧めします。

ちなみに鍵タイプにはrsa以外も指定できます。こちらの記事に意識高い鍵タイプが解説されていました。2017年版 SSH公開鍵認証で使用する秘密鍵ペアの作り方

公開鍵と秘密鍵が書かれたファイルがホームフォルダ/.sshに作成されます。lsで確認してみましょう。

ls -la ~/.ssh
id_rsa: こちらが秘密鍵。無くしたり公開したりしないよう気を付けましょう。
id_rsa.pub: こちらが公開鍵。publicのpub。このファイルの内容を接続先のサーバに保存しておくことになります。

手順2. 公開鍵を接続先サーバに配置

続いて接続先のサーバにsshで接続して作業します。

接続先のホームディレクトリ/.ssh/に移動します。

cd ~/.ssh

.sshが無い場合は作成しましょう。権限は所有者のみにつけるようにします。

mkdir ~/.ssh
chmod 700 ~/.ssh

authorized_keysというファイルを開いて(または新規作成)、接続元の端末の公開鍵を記載します。

vi authorized_keys

手順1.で作成したid_rsa.pubの内容をコピペします。

ssh-rsa AAAAB......

保存して、アクセス権を所有者のみにしておきましょう。

chmod 600 ~/.ssh/authorized_keys

これで完了です!

以上の作業で、以下のコマンドようにしてssh接続できるようになりました。

ssh -i .ssh/id_rsa xxxserver-abcxyz@ssh123.xxxserver.jp -p 2222
オプションの説明
-i: 秘密鍵ファイルを指定します。identityのi。

コマンドはむしろ長くなりましたね。

でも安心してください。次にこういったオプションや接続先情報などを入力しなくても良いように設定を行います。

ユーザー名、ホスト、ポートとか打つのがだるい、、、→ssh configを設定しましょう

ssh configの編集

接続元の端末で、~/.ssh/configを編集(または新規作成)します。

vi ~/.ssh/config

以下のように内容を記載します。

Host xxxserver
  HostName ssh123.xxxserver.jp
  User xxxserver-abcxyz
  Port 2222
  IdentityFile ~/.ssh/id_rsa

区切りは半角スペース、またはタブで記載します。

Hostには、ssh接続するときに呼び出す設定を指定する名称を記載します。好きな名前をつけてください。

その下の、HostName, User, Portには、接続先に応じた内容を記載します。
IdentityFile には、接続に使用する秘密鍵ファイルを記載します。

HostName: サーバのアドレス
User: ユーザ名
Port: ポート番号
IdentityFile: 秘密鍵ファイルの場所

保存して完了です!
以下のようなコマンドで接続ができるようになりました。

ssh xxxserver

sshの後にconfigに記載したHost名称を入れることで、記載した設定でssh接続が実行されます。
めちゃ楽になりましたね。

接続するサーバが複数ある場合は、ssh configに同じように追記していけばOKです。

Host xxxserver
  HostName ssh123.xxxserver.jp
  User xxxserver-abcxyz
  Port 2222
  IdentityFile ~/.ssh/id_rsa

Host yyserver
  HostName yyserver.jp
  User yyserver-abcxyz
  Port 22
  IdentityFile ~/.ssh/id_rsa

しばらく放置すると接続が切れるのがだるい、、、→ssh configを設定しましょう

サーバの設定にもよりますが、ssh接続してしばらく操作しないでいると、接続が切れてしまいますね。
ssh configに以下の内容を、一番上か一番下あたりに記載すると切れなくなります。

ServerAliveInterval 300

これは、「300秒ごとに、サーバが応答するか(生きてるか)確認する」という設定内容です。
(数字のところは好きに設定できます)
定期的にサーバに通信を送るようになるため、セッションタイムアウトが起きなくなる、という寸法です。

以上です!お疲れ様でした。