筆者は「Linux」を常用している。デスクトップとサーバーで同じユーザー名を使用することが多い。つまり、筆者のSSHコマンドのほとんどは、以下のような形式になる。
ssh 192.168.1.100
非常に長い間、SSHを使用してきたので、その習慣は自分の中にしっかりと根付いている。
しかし、「MacBook」や「iMac」を使用する場合、それらのユーザー名はLinuxサーバーと異なることが多い。つまり、そのコマンドは、以下のように変換する必要がある(Usernameはリモートサーバー上のユーザー名)。
ssh USERNAME@192.168.1.100
確かに、大した違いはない。コマンドにユーザー名を追加するのに、それほど時間はかからない。しかし、サーバーへのログインとログアウトを1日に何度も実行する必要がある場合は、その無駄な時間が蓄積されていく。さらに、SSHコマンドにユーザー名を追加するのを忘れたことに気づいた場合は(これは1日に何度も起こりえる)、「Ctrl」+「C」でコマンドを強制終了して、再入力する必要があり、イライラさせられる。
幸いなことに、それを回避する方法がある。SSHには、ユーザー固有の設定ファイルがあり、そこで、すべてのSSH接続にデフォルトのユーザー名を設定することが可能だ。その設定ファイルでは、個々の接続のエントリーを作成できる。個々のエントリーは、以下のようになる。
Host ubuntu-invoice User jack Hostname 192.168.1.100 IdentityFile ~/.ssh/id_rsa
上記の設定では、以下のオプションが説明されている。
- Host:接続に使用されるニックネーム(これにより、ssh ubuntu-invoiceだけで接続することが可能になる)。
- User:接続に使用されるユーザー名。
- Hostname:接続先のIPアドレスまたはドメイン。
- IdentityFile:SSH鍵認証を使用する場合、ここで、使用する鍵ファイルが定義される。
この方法によって、SSH経由で接続するすべてのリモートマシンに個別のエントリーを設定することが可能だ。ファイルには、好きなだけ多くのエントリーを追加できる。さらに、すべてのエントリーに異なるオプションを設定することも可能だ。
ただし、本記事で説明するのは、すべての接続にデフォルトのユーザー名を設定する手順だ。このオプションを設定した後、ユーザー名なしでSSHコマンドを実行すると、設定ファイルでデフォルトに設定したユーザー名が適用される。ただし、ユーザー名を含む個々のエントリーがある場合は、それらのエントリーがデフォルトよりも優先される。
それはどういう意味なのだろうか。例えば、設定ファイルで、デフォルトのSSHユーザー名をjackに設定したとしよう。さらに、設定ファイルには、以下のエントリーがある。
Host microk8s User olivia Hostname 192.168.1.70
ssh microk8sコマンドを実行すると、SSHはoliviaというユーザー名をこの接続に適用する。
この設定を実際に実行してみよう。
macOSでSSHユーザー名を設定する方法
1. ターミナルアプリを開く
まず、ターミナルアプリを開く。これを行うには、macOSの「Dock」で「Launchpad」をクリックした後、ターミナルアプリを検索し、クリックして開く。
2. SSH設定ファイルを開いて編集する
ターミナルウィンドウから、以下のコマンドを実行して、編集対象の設定ファイルを開く。
nano ~/.ssh/config
3. ユーザーエントリーを追加する。
ファイルの先頭に、以下のようなエントリーを追加する。Usernameは、設定したいユーザーだ。
Host * User USERNAME
そのエントリーを追加したら、「Ctrl」+「X」キーボードショートカットでファイルを保存して閉じる。
これで、SSH経由で任意のサーバーに接続するとき、コマンドのユーザー名を省略できるようになった。もちろん、リモートユーザー名が先ほど設定したデフォルトのユーザー名と異なる場合は、そのユーザー名をコマンドに追加するだけで、デフォルトの設定をバイパスできる。
提供:Apple
この記事は海外Red Ventures発の記事を朝日インタラクティブが日本向けに編集したものです。