どうも、Shinyaです。
この記事では、SSHコマンドを使用してコマンドラインから安全にリモート端末へアクセスする方法について書いていきます。
一般的に、自分が使用している端末からサーバーなどのリモート端末へアクセスする際には「リモートデスクトップ」と呼ばれる方法が主流です。今の時代、エンジニアでなくても様々な場面でこの技術を使ったことがある方は多いのではないでしょうか。
リモートデスクトップは、アクセス可能なネットワーク上のリモート端末の画面を自分の端末上に表示して操作ができる技術です。一方で、SSHコマンドはアクセス可能なネットワーク上のリモート端末にコマンドラインを使ってセキュアにアクセスしてコマンドベースでリモート端末を操作できる技術です。
リモート端末のファイル管理などを行う際には画面を表示して操作できるリモートデスクトップの方が向いていますが、リモート端末上の特定のプログラムを実行するような場合には必要最低限の機能が提供されているSSHコマンドを使用すると良いでしょう。
事前準備
この記事で使用していくSSHコマンドはサーバーなどのリモートアクセスする対象のリモート端末が必要です。そのため、SSHコマンドでリモートアクセスする対象のリモート端末は各自で事前に準備しておいてください。
この記事では例として、以前以下の記事でAmazon Lightsailを使用してクラウド上に作成したインスタンスを使用してSSHコマンドを使用していきます。
使用するコマンドについて
この記事で使用するコマンドはssh
コマンドです。
ssh
コマンドは、Windows、macOS、Linuxなどの主流なOSでサポートされているので、プラットフォームに依存せず使用することができます。
ssh
コマンドは提供されている機能も主流なプラットフォームの間で概ね同じなので、一度使い方を覚えてしまえばどのプラットフォームでも応用が可能な非常に汎用性の高い技術です。
基本的なSSHコマンドの使い方
ssh
コマンドは、コマンドライン上で基本的に次のように使用します。
ssh admin@192.168.0.0
上記のコマンドの「admin@192.168.0.0」の部分を、実際にリモートアクセスしたいリモート端末のユーザー名とIPアドレスに置き換えてください。
DNSでAレコードやCNAMEレコードを設定してエイリアスを作成している場合は、「admin@example.com」のようにIPアドレスの代わりに作成したエイリアスを使用することもできます。
SSHコマンドで秘密鍵を使用した認証が必要な場合
AWSなどのクラウド上にインスタンスを作成した場合は、SSHコマンドでリモートアクセスする際に秘密鍵などを使用した認証を求められる場合があります。
SSHコマンドで特定のファイルを使用して認証を行うためには、次のように-i
オプションを使用します。
ssh -i /path/to/private_key.pem admin@192.168.0.0
上記のコマンドの「/path/to/private_key.pem」の部分を、実際にリモートアクセスで認証する際に必要なファイルへのパスを指定してください。
また、macOSなどの環境では、-i
オプションで指定したファイルの実行権限が必要な場合があります。その場合は、次のコマンドをコマンドラインで実行して、使用する認証ファイルに実行権限を付与してください。
sudo chmod 400 /path/to/private_key.pem
その他のSSHコマンドのオプションについて
基本的に、SSHコマンドを使用する際には先に紹介したオプションだけでも十分ですが、場合によってはポート番号などを指定する必要があります。
そうした場合にも対応できるようにSSHコマンドには豊富なオプションが用意されていますので、必要なオプションを指定するようにしてください。
usage: ssh [-B bind_interface] [-b bind_address]
[-c cipher_spec] [-D [bind_address:]port] [-E log_file]
[-e escape_char] [-F configfile] [-I pkcs11] [-i identity_file]
[-J destination] [-L address] [-l login_name] [-m mac_spec]
[-O ctl_cmd] [-o option] [-P tag] [-p port] [-R address]
[-S ctl_path] [-W host:port] [-w local_tun[:remote_tun]]
destination [command [argument …]]
ssh [-Q query_option]
実際にSSHコマンドでリモートアクセスしてみる
それでは、早速先日以下の記事でAmazon Lightsailを使用して作成したインスタンスへ、SSHコマンドを使用してリモートアクセスしてみようと思います。
Amazon Lightsailで作成したインスタンスへSSHコマンドでリモートアクセスするためには、事前にダウンロードした秘密鍵を使用するので-i
オプションを使用します。
コマンドラインで次のようにSSHコマンドを実行してみます。
ssh -i xxxxx.pem bitnami@xxx.xxx.xxx.xxx
上記のSSHコマンドで認証を問題なく通過した場合は、次の画像のようにリモート端末にリモートアクセスできたことを確認できます。
