プログラミングハック

【ssh接続】ホスト名を設定してIPアドレスを省略する設定方法(入力補完)

 

とうふ
とうふ
どうも、WEBエンジニアのとうふです。

 

サーバーにssh接続するときは「root@123.45.67.890」のようにサーバーのユーザー名とIPアドレスを指定する必要があります。これを毎回入力するのはとても面倒ですよね?

そんなときは、サーバーにホスト名を設定することで、設定したホスト名で簡単にssh接続ができるようにすることができます!

というわけで今回は、

  • ホスト名を設定し、IPアドレスを省略してssh接続する方法
  • ホスト名をタブキーで入力補完する設定方法

の2つの設定方法を紹介します!

# これを
$ ssh root@123.45.67.890

# こうする
$ ssh site1

ssh:ホスト名の設定方法

「~/.ssh/config」に下記を追記するだけでOKです!
(パスは環境によって異なる場合があります。.ssh/以下のconfigファイルです。)

~/.ssh/config
Host <接続したい名前(例:hoge)>
  Hostname <IPアドレスorドメイン>
  User <ログインユーザー名>

configはssh接続の設定ファイルです。

ここで設定したHost名を指定するだけで、ssh接続ができるようになります。
(例の場合「ssh hoge」)

また上記以外にもポート番号の設定や、秘密鍵ファイルを指定することができますよ!

Host 任意の接続名(接続するsshのエイリアス名)
Hostname 接続するサーバーのIPアドレスまたはドメイン
User 接続するユーザー名
Port 接続するポート番号
IdentityFile 秘密鍵のファイルパス
とうふ
とうふ
サーバーごとに秘密鍵が分かれいても設定一つでIP入力を省略できるね…!

複数のホスト名を設定する場合(ファイルの書き方)

~/.ssh/config
# サーバー1
Host hoge
  Hostname 123.45.67.890
  User root
# サーバー2
Host foo
  Hostname example.com
  User example
  Prot 8888
# サーバー3
Host mysite
  Hostname 111.22.33.4444
  User root
  IdentityFile ~/mysite_sever.key

#はコメントアウトです。これで、
サーバー1に接続したいなら「ssh hoge」
サーバー3に接続したいなら「ssh mysite」
でログインができます!

ホスト名をタブで入力補完する設定

補完には「bash-completion」を使用します。

Image from Gyazo

設定したホスト名をtabキーで入力補完することができます。
上記の場合「ssh s + tabキー」だけで「site1」を自動入力してくれます!

bash-completionのインストール方法(Macの場合※1

MacではHomebrew※2を使用します。

①下記コマンドでインストールが可能です。

$ brew install bash-completion

②次に、下記を「~/.bash_profile」に記述します。(読み込む設定)

~/.bash_profile
# Bash completion (~/.ssh/configのサーバー名補完)
[ -f /usr/local/etc/bash_completion ] && . /usr/local/etc/bash_completion

これで補完が使えるようになりました!

※1 CentOS,Debian,Ubuntu等の場合はyumやapt-getを使用します。
※2 HomebrewはMacOS用のパッケージマネージャーです。

この設定だけで高速でssh接続ができるので本当に便利です!
まだ設定していない方は絶対しておくことをおすすめします!

また「うまくいかない」「わからない」などなどありましたら、
コメントまたはとうふのTwitterまでご連絡ください!

まよい羊
まよい羊
毎回の入力がなくなって作業が捗るメェ!!
とうふ
とうふ
今回はここまで…!それではまた〜