web開発

【リモート接続を楽にしよう】Macでsshを簡単する方法を紹介

こんにちは。もんしょー(@sima199407)です。

効率化したいエンジニア
効率化したいエンジニア
ssh用のコマンドを毎回打ち込むことのが大変なので少しでもかんたんにしておきたいです。。

こんな声があるかと思います。

たしかにレンタルサーバーなどにローカルから接続するときにsshで接続するかと思いますが接続するためのコマンドって長いですよね。

僕も駆け出しエンジニアの頃は毎回めんどくさいなと思いながらもポチポチ打ち込んでいましたが、あるときsshの簡略する方法を見つけたので、それをシェアしたいと思います。

先にお伝えすると今までのコマンドが以下のように対して

ssh -i [秘密鍵のパス] -p [ポート番号] [ユーザー名]@[ホスト名]

簡略化コマンドはこうなります。

ssh [コマンド名]

だいぶ短くなりますし、コマンドをいくつも登録しておけば接続の切り替えもスムーズにできちゃいますね。

sshとは?

 

sshとは?

Secure Shell(セキュアシェル)の略称で、リモートコンピュータと通信するためのプロトコルです。
参照:用語集|SSH

ということでして、安全にリモートサーバーに接続する方法として使います。

接続方法として、「秘密鍵」タイプと「パスワード」タイプがありまして、秘密鍵だと毎回接続時のパスワード認証が不要になるので便利です。

sshを簡略化する方法

簡単言うとコマンドのショートカットを作って、ご自身のmacに認識させればオッケーです。
そのために必要なものとして、

・ホスト名
・ユーザー名
・秘密鍵と鍵の場所
・接続先ポート番号

があればオッケーです。

開発環境

使っている環境はこちら

・macOS mojave(モハベ)14
・Macbook Pro 2018

macOSならたぶんどれでも大丈夫だと思います。

sshディレクトリのconfigファイルを編集する

configファイルはユーザーディレクトリパスはにあります。
[USER_dirctory]/.ssh/config
隠しファイルになっているので、ターミナルから行けば開くことができます。
【ターミナルでのconfigへアクセスする方法】

// ユーザーディレクトリに戻る
cd
// .sshに移動
cd .ssh/
// configファイルを編集
vi config

Finderから開きたいときは、隠しファイルを表示するコマンドを打つ必要があります。「Macのショートカットキー – 不可視ファイルの表示/非表示を切り替える」を見ながらやるといいですね。

configファイルの中身

configファイルは基本以下のようにします

Host commandName //コマンド呼び出し名(任意でオッケー)
          HostName                  //ホスト名
          User                           //ログインするユーザー名
          IdentityFile                //秘密鍵の場所 例) ~/.ssh/[keyName]
          Port                           //接続先のポート番号
          TCPKeepAlive yes    //接続状態の継続(特に指定がないならyesでオッケーです)
          IdentitiesOnly yes    //ファイルに格納されている鍵のみ使用(特に指定がないならyesでオッケーです)

commandNameは毎接続時に使うものになります。この形を使えばいくつも設定できます。

僕のエックスサーバーを契約しているんですが、こんな感じで設定してます。

Host my_server_001
    HostName myserver001.xsrv.jp
    User myserver001
    IdentityFile ~/.ssh/myserver.key
    Port 10022
    TCPKeepAlive yes
    IdentitiesOnly yes

ホスト名とユーザー名、ポートはサーバーを見れば分かるかと思います。
秘密鍵はweb上で作ってもいいし、ローカル側で作ったものをサーバーに登録するのでもいいです。
【秘密鍵/公開鍵】コピペで出来る!鍵認証の設定方法」が分かりやすいかと思います。

上記の接続でも大丈夫ですが、セッションタイムが切れると接続が自動でログアウトになるので接続を持続するために以下のオプションをconfigファイルに追加しておきましょう。

~
   IdentitiesOnly yes
    ServerAliveInterval 60

意味としては「60秒に一回この接続が生きていることをサーバー側に知らせている」ということです。

接続確認

ターミナルに以下をを叩いて接続できれば完了

ssh commandName

まとめ

今回意外と忘れやすいので自分のメモのように残しておきました。

sshの簡略化はそこまで面倒なものではないので設定しておくと日々の作業の効率化にいいと思います。