SSHコマンドを使用してコマンドラインから安全にリモート端末にアクセスする

Amazon Lightsail
この記事はこんな人にオススメ
  • SSHコマンドに興味のある人
  • コマンドラインを使ってリモート端末にアクセスしたい人
  • リモートデスクトップ以外の方法でリモート端末にアクセスしたい人

どうも、Shinyaです。

この記事では、SSHコマンドを使用してコマンドラインから安全にリモート端末へアクセスする方法について書いていきます。

一般的に、自分が使用している端末からサーバーなどのリモート端末へアクセスする際には「リモートデスクトップ」と呼ばれる方法が主流です。今の時代、エンジニアでなくても様々な場面でこの技術を使ったことがある方は多いのではないでしょうか。

リモートデスクトップは、アクセス可能なネットワーク上のリモート端末の画面を自分の端末上に表示して操作ができる技術です。一方で、SSHコマンドはアクセス可能なネットワーク上のリモート端末にコマンドラインを使ってセキュアにアクセスしてコマンドベースでリモート端末を操作できる技術です。

リモート端末のファイル管理などを行う際には画面を表示して操作できるリモートデスクトップの方が向いていますが、リモート端末上の特定のプログラムを実行するような場合には必要最低限の機能が提供されているSSHコマンドを使用すると良いでしょう。

必要最低限の機能のみが提供されているSSHコマンドであっても、リモート端末側でリソースへの適切なアクセス権限が設定されていない場合は誤操作などの事故が起こる可能性が高くなります。

そのため、リモートデスクトップやSSHコマンドなどのアクセス方法を問わず、安全なリモート操作を行うためにはリモート端末側での適切な権限管理が必須です。

事前準備

この記事で使用していくSSHコマンドはサーバーなどのリモートアクセスする対象のリモート端末が必要です。そのため、SSHコマンドでリモートアクセスする対象のリモート端末は各自で事前に準備しておいてください。

この記事では例として、以前以下の記事でAmazon Lightsailを使用してクラウド上に作成したインスタンスを使用してSSHコマンドを使用していきます。

アクセスする対象のリモート端末が、AWSなどのクラウド上のインスタンスオンプレミスのサーバーであっても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

上記のコマンドを参考に、実際に自分が使用する認証ファイルやIPアドレスに置き換えてSSHコマンドを実行してください

上記のSSHコマンドで認証を問題なく通過した場合は、次の画像のようにリモート端末にリモートアクセスできたことを確認できます。

Shinya

フリーランス。プログラマー歴10年以上。Amazoned Programmer (Amazon中毒のプログラマー)。

仕事ではJavaとSQLとかを主に使ってアプリケーションを開発しています。BIツールを使用したビッグデータの可視化や解析から、AWSなどのクラウド技術の活用に興味があり、日々研究と研鑽を重ねています。このブログでは日々の学習のアウトプットを投稿していこうと思います。

お気に入りの言葉は「Day 1」と「Data Never Sleeps」。

Shinyaをフォローする
Amazon LightsailIdeaSecurityTechTool
Shinyaをフォローする
タイトルとURLをコピーしました