SSHとは何ですか?
SSHとはSecure Shell(セキュアシェル)の略です。接続が暗号化されるため、SSHを使用すると安全な方法でリモートマシンにアクセスできます。Linuxターミナルからsshコマンドを使用することで、リモートのLinuxサーバーに接続し、自分のコンピュータであるかのように作業することができます。このチュートリアルの最後には、次の環境でリモートサーバーに接続するためのSSHの使用方法を完全に理解しているはずです:Ubuntu.
構文
構文は、sshコマンドを使用する方法のルールです。構文を並べ替えることはできますが、直接的な形式に従う必要があります。以下は、sshコマンドを使用するための構文の例です。
|
1 |
ssh remote_host |
接続先となるドメイン名またはIPアドレスが、上記のコマンドに示されているremote_hostです。この構文は、リモートシステムとローカルシステム上のユーザー名が同じであることを前提としています。ただし、ユーザー名が異なる場合は、次のコマンドで指定できます。
|
1 |
ssh remote_username@remote_host |
サーバーに接続すると、すぐにパスワードを入力して本人確認を行う必要があります。ローカルセッションに戻るには、exitコマンドを入力します。
SSHの設定方法
Ubuntuにおけるメインのsshd設定ファイルは /etc/ssh/sshd_config にあります。SSH設定を変更すると、SSHDサーバーの設定が自動的に変更されます。設定を行う前に、次のコマンドを使用して現在のバージョンのファイルを必ずバックアップしてください。
|
1 |
sudo cp /etc/ssh/sshd_config{,.bak} |
テキストエディタを使用して開きます。
|
1 |
sudo nano /etc/ssh/sshd_config |
このファイル内のほとんどのパラメータはそのままにしておく必要があります。ただし、注意すべき点がいくつかあります。
|
1 |
Port 22 |
ポート宣言は、SSHDサーバーが接続を待機するポートを示します。デフォルトは22です。特別な理由がない限り、この設定を変更する必要はありません。
|
1 2 3 |
HostKey /etc/ssh/ssh_host_rsa_key HostKey /etc/ssh/ssh_host_dsa_key HostKey /etc/ssh/ssh_host_ecdsa_key |
ホストキー宣言は、グローバルホストキーが配置されている場所を示します。
|
1 2 |
SyslogFacility AUTH LogLevel INFO |
出力すべきログのレベルは、これら2つの項目で示されます。SSHの使用に問題がある場合、問題を特定する優れた方法は、ログのレベルを上げることです。
|
1 2 3 |
LoginGraceTime 120 PermitRootLogin yes StrictModes yes |
これらのオプションは、設定ファイルが安全でない場合に不正なログインを防ぐための、ログインに関する情報を定義します。
|
1 2 |
X11Forwarding yes X11DisplayOffset 10 |
これらのパラメータ設定は、X11フォワーディング機能と呼ばれます。これにより、リモートシステムのGUIをローカルシステムに表示できます。SSHクライアントに -X オプションを付けて接続する際は、サーバー側でこのオプションを有効にする必要があります。
変更を加えた後、ファイルを保存し、CTRL-X、Yの順に押してからEnterキーを押して閉じます。/etc/ssh/sshd_configの設定を変更した場合は、変更を適用するためにsshdサーバーを再起動する必要があります。
|
1 |
sudo service ssh restart |
Ubuntu 16.04やDebian Jessieなどのsystemdシステムでは、次のコマンドを使用します。
|
1 |
sudo systemctl restart ssh |
すべてが完全に動作していることを確認するために、変更を徹底的にテストしてください。変更を加える場合は、いくつかのセッションをアクティブなままにしておくことをお勧めします。そうすれば、必要に応じて設定を元に戻すことができます。
鍵を使用してSSHにログインするにはどうすればよいですか?パスワードを使用してリモートシステムにログインするのもよいですが、鍵ベースの認証を設定するのが最善です。
鍵ベースの認証とは何ですか?
鍵ベースの認証では、秘密鍵と公開鍵と呼ばれる2つの鍵のペアが作成されます。秘密鍵はユーザーのコンピューターにあり、保護され秘密に保たれています。公開鍵は誰にでも公開でき、アクセスしたい任意のサーバーに保存できます。鍵ペアを使用して接続しようとすると、サーバーは公開鍵を使用してユーザーのコンピューター向けのメッセージを生成します。ユーザーは秘密鍵を使用することでのみ、そのメッセージを読み取ることができます。その後、ユーザーのコンピューターはサーバーに応答を返し、サーバーはユーザーが本物であることを認識します。鍵を設定すると、プロセス全体がバックグラウンドで自動的に完了します。
SSH鍵の作成方法
SSH鍵は、ログイン元のコンピューターで生成する必要があります。これは通常、ローカルコンピューターです。コマンドラインに以下を入力します。
|
1 |
ssh-keygen -t rsa |
次に、ENTERキーを押してデフォルト値を受け入れます。これにより、~/.ssh/id_rsa.pub および ~/.ssh/id_rsa に鍵が生成されます。次に、以下のコマンドを入力して .ssh ディレクトリに移動します。
|
1 |
cd ~/.ssh |
これらはファイルの権限です:
|
1 |
ls -l |

ご覧の通り、所有者のみが id_rsa ファイルの読み取りと書き込みを行えます。したがって、安全に保管する必要があります。ただし、id_rsa.pub ファイルは共有することができ、この操作に適した権限を持っています。次のステップは、以下の構文を使用して公開鍵をサーバーに転送することです。
|
1 |
ssh-copy-id remote_host |
これによりSSHセッションが開始され、認証のためにパスワードを使用する必要があります。パスワードを入力すると、公開鍵がサーバー’sの認証済み鍵ファイルにコピーされ、次回からはパスワードなしでログインできるようになります。
パスワード認証を無効にする方法
SSH鍵が生成されている場合、パスワードのみの認証を無効にすることでサーバーのセキュリティを向上させることができます。コンソールを使用する代わりに、サーバーにインストールされた公開鍵とペアになる秘密鍵を使用してサーバーにログインできます。
注意:この手順に進む前に、必ず公開鍵をサーバーにインストールしてください。そうしないと、アクセスできなくなります!
次のコマンドを使用してsshd設定ファイルを開きます:
|
1 |
sudo nano /etc/ssh/sshd_config |
先頭の # を削除して、PasswordAuthentication の行を見つけてコメントアウトを解除します。その後、値を “no” に変更できます:
|
1 |
PasswordAuthentication no |
PubkeyAuthentication と ChallengeResponseAuthentication はデフォルトで設定されており、次のようになっているはずです:
|
1 2 |
PubkeyAuthentication yes ChallengeResponseAuthentication no |
これら2つの設定は変更しないでください。変更を加えた後、ファイルを保存して閉じます。次に、以下のコマンドを使用してSSHデーモンを再起動します:
|
1 |
sudo systemctl restart ssh |
これでパスワード認証が無効になり、サーバーにはSSH鍵認証を使用してのみアクセスできるようになります。
まとめ
このチュートリアルでは、UbuntuでSSHを使用してリモートサーバーに安全に接続する方法を説明しました。システム管理者にとってSSHの使用方法を学ぶことは基本であるため、このチュートリアルをマスターした後は、SSHのより高度な機能に進むことができます。
ハッピーコンピューティング!
コメント
コメントはまだありません。最初のコメントを投稿しましょう。