はじめに
sshやsftpなどのコマンドで他のサーバーに接続できますが、接続のたびにIPアドレスやドメイン名を打つのは大変です。
また、サーバーの設定で、パラメータ追加や踏み台経由で接続する必要があるとさらにコマンドが長くなります。
こんな時は「~/.ssh/config」を設定すると快適に実行できます。
概要
~/.ssh/configに接続設定を書いてコマンド短縮
~/.ssh/configって?
sshでリモートサーバーに接続するときに使用する設定ファイルです
~/.ssh/configを使わない場合
configファイルを使わない場合は下記のように接続するか、
# IPアドレスで接続
$ ssh xxx.xxx.xxx.xxx
# ユーザ名やドメイン名で接続
$ ssh user@serverxxxx.com
パラメータを設定して接続します。
# 鍵やポートの指定
$ ssh xxx.xxx.xxx.xxx -i ~/.ssh/鍵の名前 -p ポート番号
鍵がデフォルトの名前でなかったり、ポート番号を変えているとパラメータが増えるのでコマンドが長くなってしまいます。
こんなときにconfigファイルを設定すると、コマンドを短縮できます。
~/.ssh/configの設定
ファイルが無い場合は作成します。
$ touch ~/.ssh/config
ちなみに、Linuxの場合はパーミッションを変更しておきましょう
$ chmod 700 ~/.ssh/config
~/.ssh/configの中身はこんな感じです。
Host 任意の名称(こちらの名称が接続時に使用できます)
Hostname 接続先のIPアドレス/ドメイン名
User ユーザ名
Port ポート番号
Identityfile 鍵ファイルのパス
ServerAliveInterval 秒(自動切断防止設定。後述)
例えば下記のように設定すると、
Host sv1
Hostname server.xxx.com
User user1
Port 2222
Identityfile ~/.ssh/key_name
ServerAliveInterval 60
このような記述で接続できます。
$ ssh sv1
ここで、ServerAliveInterval
は自動切断防止のための記述です。
サーバーの設定などで、一定時間操作しないと切断されてしまうことがあります。
そのような場合にServerAliveInterval を設定しておくと自動で生存報告をしてくれるため、切断されなくなります。
また、scpコマンドなどもconfig設定で動作できます。
$ scp file_name sv1:~/
踏み台の設定
踏み台経由でSSH接続する場合もconfigを利用できます。
# 踏み台サーバ
Host sv1
Hostname server.xxx.com
User user1
Port 2222
Identityfile ~/.ssh/key_name1
ServerAliveInterval 60
# ターゲットサーバ
Host sv2
Hostname server2.xxx.com
User user2
Port 22
Identityfile ~/.ssh/key_name2
ServerAliveInterval 60
ProxyCommand ssh -W %h:%p sv1
この記述のProxyCommand
が踏み台設定です。
接続方法はこちら
$ ssh sv2
特に意識せず、簡単に接続できます。
おまけ:PhpStormの設定
PhoStorm(IntelliJ IDEA)でもconfigファイルの設定を利用できます。
① リモートホストの設定
メニューバーの「Tools」→「Deployment」→「Configuration」を開きます。
Authentication欄を「OpenSSH config …」に設定します。
Host欄に「~/.ssh/config」で設定したホスト名を記載します。
合わせて、ポート番号とユーザ名の設定をしてやります。
(ここではポート番号とユーザ名の指定も必要なようです。)
Hostは踏み台サーバーを経由した接続も設定可能です。
② 踏み台が必要なDBの設定
リモート先のLAN内にあるDBサーバーや、Xサーバーやサクラサーバーといったレンタルサーバで、接続用サーバ経由でDBにアクセスすることも可能です。
データベースの追加ダイアログを開き、「SSH/SSL」タブで設定します。
「Auth type」を「OpenSSH config …」に設定します。
「Proxy host」に接続用サーバのホスト名を指定します。
ここでは、ホスト名のみ指定すると他の項目が自動設定されます。
踏み台サーバの指定も可能です。
あとは「General」タブで、接続用サーバから見たDBの設定をしてやります。
まとめ
「~/.ssh/config」は色々な接続設定を管理できるので便利です。
また、ほかのファイルから設定をIncludeできるので、チーム内での設定共有にも使えるかも。
コメント