紹介
システム管理者としてマスターする必須のツールの一つはSSHです。
SSH、またはSecure Shellは、リモートシステムに安全にログインするためのプロトコルです。これはリモートLinuxサーバーにアクセスする最も一般的な方法です。
このガイドでは、リモートシステムに接続するためにSSHを使用する方法について説明します。
GithubからフロントエンドアプリケーションをDigitalOcean App Platformを使用してデプロイしてください。DigitalOceanにアプリのスケーリングを任せましょう。
コア構文
SSHを使用してリモートシステムに接続するには、ssh
コマンドを使用します。
Windowsを使用している場合、ターミナルからssh
を実行できるようにするには、OpenSSHのバージョンをインストールする必要があります。PowerShellで作業する場合は、Microsoftのドキュメントに従ってOpenSSHをPowerShellに追加できます。完全なLinux環境を利用したい場合は、WSLをセットアップすることができます。これにより、デフォルトでssh
が含まれます。最後に、軽量な第三のオプションとして、Git for Windowsをインストールすることができます。これにより、ssh
コマンドが含まれたネイティブのWindows bashターミナル環境が提供されます。これらのいずれも十分にサポートされており、使用することを選択するのは好みの問題です。
MacまたはLinuxを使用している場合、すでにターミナルでssh
コマンドが利用可能です。
コマンドの最も直接的な形式は次の通りです:
この例のremote_host
は、接続しようとしているIPアドレスまたはドメイン名です。
このコマンドは、リモートシステム上のユーザー名がローカルシステム上のユーザー名と同じであると想定しています。
リモートシステム上のユーザー名が異なる場合は、次の構文を使用して指定できます:
サーバーに接続すると、パスワードを提供して身元を確認するように求められる場合があります。後で、パスワードの代わりに使用するキーを生成する方法について説明します。
SSHセッションを終了し、ローカルのシェルセッションに戻るには、次のように入力してください:
SSHはどのように動作しますか?
SSHは、クライアントプログラムをsshd
と呼ばれるSSHサーバーに接続することで動作します。
前のセクションでは、ssh
がクライアントプログラムでした。指定したremote_host
でSSHサーバーがすでに実行されていました。
ほとんどのLinux環境では、sshd
サーバーは自動的に起動するはずです。何らかの理由で実行されていない場合は、一時的にWebベースのコンソールまたはローカルシリアルコンソールを介してサーバーにアクセスする必要があります。
SSHサーバーを起動するために必要なプロセスは、使用しているLinuxディストリビューションに依存します。
Ubuntuでは、次のように入力してSSHサーバーを起動できます:
これにより、sshdサーバーが起動し、リモートでログインできるようになります。
SSHの設定方法
SSHの構成を変更すると、sshdサーバーの設定が変更されます。
Ubuntuでは、主要なsshd構成ファイルは/etc/ssh/sshd_config
にあります。
編集する前に、このファイルの現在のバージョンをバックアップしてください。
お好みのテキストエディタ、例えばnano
を使用して開いてください:
このファイルのほとんどのオプションはそのままにしておくことが望ましいでしょう。ただし、いくつかのオプションを確認することがあります:
Port 22
ポート宣言は、sshdサーバーが接続を待ち受けるポートを指定します。デフォルトでは、これは22
です。特別な理由がない限り、この設定をそのままにしておくことが良いでしょう。ポートを変更した場合は、後で新しいポートに接続する方法を示します。変更する場合、後で新しいポートに接続する方法を示します。
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
ホストキーの宣言は、グローバルホストキーを探す場所を指定します。ホストキーとは何かについて後で説明します。
SyslogFacility AUTH
LogLevel INFO
これらの2つの項目は、発生するログのレベルを指定します。
SSHで問題が発生している場合、ログの量を増やすことで問題が何であるかを発見するのに役立つことがあります。
LoginGraceTime 120
PermitRootLogin yes
StrictModes yes
これらのパラメータは、一部のログイン情報を指定します。
LoginGraceTime
は、ログインに成功せずに接続を維持する秒数を指定します。
通常のログインにかかる時間よりも少し長い時間を設定すると良いでしょう。
PermitRootLogin
は、rootユーザーがログインできるかどうかを選択します。
ほとんどの場合、サーバーにルートアクセス権限を持つユーザーアカウント(su
またはsudo
を介して)を作成し、sshを介してログインできるようにした場合、これをno
に変更して、誰もがサーバーにルートアクセス権限を取得するリスクを最小限に抑えるべきです。
strictModes
は、認証ファイルが全てのユーザーによって読み取り可能な場合にログイン試行を拒否する安全ガードです。
これにより、構成ファイルが安全でない場合にログイン試行を防止します。
X11Forwarding yes
X11DisplayOffset 10
これらのパラメーターは、X11 フォワーディングと呼ばれる機能を構成します。これにより、リモートシステムのグラフィカルユーザーインターフェース(GUI)をローカルシステムで表示できます。
このオプションは、サーバーで有効にし、SSHクライアントで接続時に-X
オプションと共に指定する必要があります。
変更を保存してファイルを閉じた後は、変更を有効にするためにsshサーバーを再読み込みする必要があります:
変更した場合は、設定を適用するためにsshdサーバーを再読み込みする必要があります:
期待通りに動作することを確認するために、変更を十分にテストする必要があります。
変更を行う間は、いくつかのターミナルセッションを開いておくと良いでしょう。これにより、必要に応じて構成を元に戻すことができ、自分自身をロックアウトすることなく済みます。
鍵を使用してSSHにログインする方法
パスワードを使用してリモートシステムにログインできることは便利ですが、キーベースの認証を設定することがより迅速で安全です。
キーベース認証はどのように機能しますか?
キーベース認証は、秘密鍵と公開鍵のペアを作成することで機能します。
秘密鍵はクライアントマシンに配置され、安全に保護されて秘密に保持されます。
公開鍵は誰にでも提供でき、またアクセスしたい任意のサーバーに配置できます。
キーペアを使用して接続しようとすると、サーバーはクライアントコンピューター向けに公開鍵を使用してメッセージを作成し、そのメッセージは秘密鍵でのみ読むことができます。
クライアントコンピューターは適切な応答をサーバーに送信し、サーバーはクライアントが正当であることを知ります。
このプロセスは、キーを構成した後に自動的に実行されます。
SSHキーの作成方法
SSHキーは、通常はローカルマシンであるログインしたいコンピューターで生成する必要があります。から。
次のコマンドをコマンドラインに入力します:
キー ファイル自体にパスワードを設定するように求められる場合がありますが、これはかなり一般的なプラクティスではなく、デフォルトを受け入れるためにプロンプトを押し、Enter キーを押す必要があります。~/.ssh/id_rsa.pub および ~/.ssh/id_rsa にキーが作成されます。
次のように入力して、.ssh
ディレクトリに移動します:
ファイルの権限を確認してください:
Output-rw-r--r-- 1 demo demo 807 Sep 9 22:15 authorized_keys
-rw------- 1 demo demo 1679 Sep 9 23:13 id_rsa
-rw-r--r-- 1 demo demo 396 Sep 9 23:13 id_rsa.pub
わかるように、id_rsa
ファイルは所有者に対して読み取り可能で書き込み可能です。これにより、秘密に保つことができます。
ただし、id_rsa.pub
ファイルは共有でき、このアクティビティに適した権限があります。
サーバーへの公開鍵の転送方法
現在、サーバーへのパスワードベースのアクセスがある場合は、次のコマンドを発行して公開鍵をコピーできます:
これにより、SSH セッションが開始されます。パスワードを入力した後、公開鍵がサーバーの認証済み鍵ファイルにコピーされ、次回以降パスワードなしでログインできるようになります。
クライアント側のオプション
SSH を介して接続する際に指定できるオプションフラグがいくつかあります。
いくつかは、リモートホストのsshd
設定と一致させる必要があるかもしれません。
たとえば、sshd
設定でポート番号を変更した場合は、クライアント側でそのポートを次のように入力して一致させる必要があります:
注意: SSHポートを変更することは、一種のセキュリティを見えなくする手段です。広く知られたサーバーデプロイメントでポート22で通常のようにssh接続を許可し、パスワード認証を有効にしている場合、多くの自動ログイン試行によって攻撃される可能性が高くなります。キーベースの認証のみを使用し、sshを標準ではないポートで実行することは、最も複雑なセキュリティソリューションではありませんが、これらを最小限に抑えるはずです。
リモートシステムで単一のコマンドのみを実行したい場合は、次のようにホストの後にそれを指定できます:
リモートマシンに接続し、認証され、コマンドが実行されます。
先ほど述べたように、両方のコンピューターでX11転送が有効になっている場合、次のように入力することでその機能にアクセスできます:
適切なツールをコンピューターにインストールしている場合、リモートシステムで使用するGUIプログラムは、そのウィンドウがローカルシステムに表示されます。
パスワード認証の無効化
SSHキーを作成した場合、パスワードのみの認証を無効にすることで、サーバーのセキュリティを向上させることができます。コンソール以外からサーバーにログインする唯一の方法は、サーバーにインストールされている公開鍵に対応する秘密鍵を使用することです。
警告: この手順を進める前に、サーバーに公開鍵がインストールされていることを確認してください。そうでない場合、ロックアウトされる可能性があります!
rootまたはsudo権限を持つユーザーとして、sshd
構成ファイルを開きます:
Password Authentication
と記載されている行を探し、先頭の#
を削除してコメントを外します。その後、その値をno
に変更します:
PasswordAuthentication no
これまでにこのファイルを変更していない場合、変更する必要がないもう2つの設定はPubkeyAuthentication
とChallengeResponseAuthentication
です。これらはデフォルトで設定されており、次のようになります:
PubkeyAuthentication yes
ChallengeResponseAuthentication no
変更を保存してファイルを閉じます。
SSHデーモンを再読み込みできます:
パスワード認証は無効になり、サーバーはSSHキー認証のみでアクセス可能になります。
結論
学習をすることは、将来のクラウドコンピューティングの取り組みに大きな利益をもたらすでしょう。さまざまなオプションを使用すると、より高度な機能が見つかり、生活が楽になります。SSHは安全で軽量であり、さまざまな状況で有用であるため、人気が持続しています。
Source:
https://www.digitalocean.com/community/tutorials/how-to-use-ssh-to-connect-to-a-remote-server