こんにちは。もんしょー(@sima199407)です。
こんな声があるかと思います。
たしかにレンタルサーバーなどにローカルから接続するときにsshで接続するかと思いますが接続するためのコマンドって長いですよね。
僕も駆け出しエンジニアの頃は毎回めんどくさいなと思いながらもポチポチ打ち込んでいましたが、あるときsshの簡略する方法を見つけたので、それをシェアしたいと思います。
先にお伝えすると今までのコマンドが以下のように対して
ssh -i [秘密鍵のパス] -p [ポート番号] [ユーザー名]@[ホスト名]
簡略化コマンドはこうなります。
ssh [コマンド名]
だいぶ短くなりますし、コマンドをいくつも登録しておけば接続の切り替えもスムーズにできちゃいますね。
sshとは?
[box04 title="sshとは?"]Secure Shell(セキュアシェル)の略称で、リモートコンピュータと通信するためのプロトコルです。
参照:用語集|SSH [/box04]
ということでして、安全にリモートサーバーに接続する方法として使います。
接続方法として、「秘密鍵」タイプと「パスワード」タイプがありまして、秘密鍵だと毎回接続時のパスワード認証が不要になるので便利です。
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の簡略化はそこまで面倒なものではないので設定しておくと日々の作業の効率化にいいと思います。