この記事では、~/.ssh/configを用いたSSH接続を解説します。
特にWindowsユーザーが理解できるように説明しています。
本記事の内容
- ~/.ssh/configとは?
- ~/.ssh/configの作成
- ~/.ssh/configの動作確認
それでは、上記に沿って解説していきます。
~/.ssh/configとは?
~/.ssh/configとは、SSH接続における個人用設定の設定ファイルです。
個人用があるということは、もちろんシステム(OS)用も存在します。
(※/etc/ssh/ssh_configが一般的)
ただ、通常はSSHコマンドを実行するのはユーザーです。
そのため、個人用の設定ファイルを対象として説明します。
では、~/.ssh/configを利用すると、どんないいことがあるのでしょうか?
それは、SSH接続が簡単に行えるようになるということです。
例えば、SSH接続では次のようなコマンドを実行することが多いです。
ssh ユーザー名@ホストのアドレス(or IPアドレス) -i 秘密鍵のパス -p ポート番号
長いと言えば、長いです。
ポート番号は、22なら省略することは可能ですけどね。
~/.ssh/configを利用すれば、上記コマンドを次のように省略できるようになります。
ssh ホスト名
ホスト名という表現は、ホストのアドレスと異なることを強調しています。
要するに、ホスト名は自分で自由に決めてよいということです。
これだけでも十分に~/.ssh/configを利用する効果はあります。
SSH接続が簡単になっていますからね。
コマンドが省略できて簡単になっていると同時に、管理もしやすくなっています。
そして、自分で決めた名称で各サーバーを管理できることにもなっています。
以上、~/.ssh/configについて説明しました。
次は、~/.ssh/configを作成していきます。
~/.ssh/configの作成
~/.ssh/configの作成については、以下に分けて説明します。
- ~/.ssh/configの設置場所
- configファイルの作成
~/.ssh/configの設置場所
~/.ssh/configの設置場所から、説明します。
「~」とある以上、各ユーザーのホームディレクトリ以下になります。
Windowsの場合であれば、次のようにすればホームディレクトリに移動できます。
エクスプローラーのアドレスバーに「%HOMEPATH%」と入力するだけです。
自動的にユーザーのホームディレクトリに移動します。
ここで、「.ssh」ディレクトリがあるかどうかを確認しましょう。
一度でも、sshコマンドを利用していれば存在しているはずです。
もし、なければ「.ssh」ディレクトリを新規に作成しましょう。
なお、LinuxやmacOSなら次のコマンドでホームディレクトリに移動できます。
cd $HOME
configファイルの作成
configファイルには、多くの設定項目が存在しています。
ここでは、これさえ設定すれば大丈夫というモノに絞って取り上げます。
以下は、実際に利用しているconfigファイルです。
二つのサーバー(接続先)を登録しています。
Host remote_server HostName 192.168.33.100 Port 22 User ssh_test IdentityFile ~/.ssh/id_rsa Host remote_server_pass HostName 192.168.33.110 User test_user
各項目の説明は、以下。
項目 | 内容 |
HostName | 実際のホスト名(host.example.com) or IPアドレス |
Port | ポート番号(デフォルトは22) |
User | ログインするユーザー名 |
IdentityFile | 秘密鍵のファイルパス(「~」チルダ表記利用可能) |
基本的には、remote_serverの記述になると思います。
セキュリティ上、秘密鍵の利用が好ましいことは言うまでもありません。
秘密鍵を用いた公開鍵認証については、次の記事で解説しています。
また、remote_server_passのような記述も可能です。
この場合は、毎回パスワードを聞かれます。
パスワード認証のみOKというサーバーもまだまだ存在します。
特に社内といった閉じた環境で利用するようなサーバーです。
そうは言っても、秘密鍵を設定した方が~/.ssh/configの利用価値はUPします。
SSH接続の簡便化に加えて、自動化も可能になりますからね。
パスワード認証でワンクッション置く必要がありません。
なお、configファイルの項目の詳細を知りたい場合は、次のキーワードで検索してください。
「ssh_config(5) man page」
ここで取り上げなかった設定項目についても確認することができます。
以上、~/.ssh/configの作成を説明しました。
最後は、~/.ssh/configの動作確認を行います。
~/.ssh/configの動作確認
Windowsであれば、まずはコマンドプロンプトかPowerShellを起動します。
そして、~/.ssh/configに設定したサーバーを接続先としてsshコマンドを入力します。
>ssh remote_server
そして、上記を実行します。
~/.ssh/configの設定が問題なければ、対象サーバーにログインできます。
~/.ssh/configで設定したユーザー名にプロンプトも変更されています。
ホストからわかるように、サーバーのOSはUbuntu 20.04です。
ssh_test@ubuntu-focal:~$
念のため、IPアドレスも確認しておきましょう。
ssh_test@ubuntu-focal:~$ ip address show | grep '192.168.33.100' inet 192.168.33.100/24 brd 192.168.33.255 scope global enp0s8
~/.ssh/configで設定したIPアドレスが表示されています。
問題ありません。
以上、~/.ssh/configの動作確認の説明でした。