はじめに
OpenSSHは、ネットワークコンピュータ間のリモート制御、およびデータ転送のためのツールの強力なコレクションです。 また、OpenSSHサーバーアプリケーションで可能な構成設定のいくつかと、Ubuntuシステムでそれらを変更する方法についても学習します。
OpenSSHは、リモート制御、またはコンピュータ間でファイルを転送するためのツールのSecure Shell(SSH)プロトコルファミリの自由に利用可能なバージョンです。 Telnetやrcpなど、これらの機能を実行するために使用される従来のツールは安全ではなく、使用するとユーザーのパスワードを平文で送信します。 OpenSSHは、安全で暗号化されたリモート制御とファイル転送操作を容易にするためのサーバーデーモンとクライアントツールを提供し、従来のツールを効果的に置
OpenSSHサーバーコンポーネントsshdは、任意のクライアントツールからのクライアント接続を継続的にリッスンします。 接続要求が発生すると、sshdは接続するクライアントツールの種類に応じて正しい接続を設定します。 たとえば、リモートコンピュータがsshクライアントアプリケーションに接続している場合、OpenSSHサーバーは認証後にリモート制御セッションを設定します。 リモートユーザーがscpを使用してOpenSSHサーバーに接続すると、OpenSSHサーバーデーモンは認証後にサーバーとクライアントの間でファイルの安全なコピーを開始します。 OpenSSHは、プレーンパスワード、公開鍵、Kerberosチケットなど、多くの認証方法を使用できます。
インストール
OpenSSHクライアントおよびサーバーアプリケーションのインストールは簡単です。 UbuntuシステムにOpenSSHクライアントアプリケーションをインストールするには、ターミナルプロンプトで次のコマンドを使用します。
sudo apt install openssh-client
OpenSSHサーバーアプリケーファイル/etc/ssh/sshd_config
。 このファイルで使用されている設定ディレクティブについては、ターミナルプロンプトで発行される次のコマンドを使用して適切なマニュアルページを表示することができます。
man sshd_config
sshd設定ファイルには、通信設定や認証モードなどを制御する多くのディレクティブがあります。 以下は、/etc/ssh/sshd_config
ファイルを編集することで変更できる設定ディレクティブの例です。
ヒント
設定ファイルを編集する前に、元のファイルのコピーを作成し、元の設定を参照として保持し、必要に応じて再利用するよ
/etc/ssh/sshd_config
ファイルをコピーし、ターミナルプロンプトで発行された次のコマンドで書き込みから保護します。sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.originalsudo chmod a-w /etc/ssh/sshd_config.original
さらに、sshサーバを失うとサーバに到達する方法が失われる可能性があるため、設定を変更した後、サーバを再起動する前に設定を確認してください:
sudo sshd -t -f /etc/ssh/sshd_config
変更できる設定ディレクティブの例は次のとおりです。
- OpenSSHをデフォルトのTCPポート22の代わりにTCPポート2222でリッスンするように設定するには、Portディレクティブを次のように変更します。
Port2222
iv id=”opensshサーバーに
/etc/issue.net
/etc/ssh/sshd_config
ファイルに次の行を追加または変更します。banner/etc/issue。net
/etc/ssh/sshd_config
ファイルを変更した後、ファイルを保存し、ターミナルプロンプトで次のコマンドを使用してsshdサーバーアプリケーションを再起動して変更を有効にします。sudo systemctl restart sshd.service
warning
sshdの他の多くの設定ディレクティブは、あなたのニーズに合わせてサーバーアプリケーションの動作を変更するために利用可能です。 ただし、サーバーへの唯一のアクセス方法がsshであり、
/etc/ssh/sshd_config
ファイルを使用してsshdを設定する際に誤っている場合は、再起動時にサーバーからロックアウ さらに、誤った設定ディレクティブが指定された場合、sshdサーバーは起動を拒否する可能性があるため、リモートサーバー上でこのファイルを編集するときにSSHキー
SSHは、パスワードを必要とせずに二つのホスト間の認証を可能にします。 SSHキー認証では、秘密キーと公開キーを使用します。キーを生成するには、ターミナルプロンプトから次のように入力します。
ssh-keygen -t rsa
これにより、RSAアルゴリズムを使用してキーが生成されます。 この記事の執筆時点では、生成された鍵は3072ビットを持つことになります。 ビット数は、
-b
オプションを使用して変更できます。 たとえば、4096ビットのキーを生成するには、次のようにします。ssh-keygen -t rsa -b 4096
プロセス中にパスワードの入力を求められます。 キーを作成するように求められたら、単にEnterキーを押します。デフォルトでは、公開鍵はファイル
~/.ssh/id_rsa.pub
~/.ssh/id_rsa
id_rsa.pub
~/.ssh/authorized_keys
に追加します。ssh-copy-id username@remotehost
最後に、
authorized_keys
ファイルのパーミッションを再確認します。認証されたユーザーのみが読み取りおよび書き込みパーミッションを持つ必要があります。 権限が正しくない場合は、次のように変更します:p>chmod 600 .ssh/authorized_keys
パスワードの入力を求められずにホストにSSHできるようになりました。
公開キーサーバからキーをインポート
最近、多くのユーザーがすでにlaunchpadやgithubなどのサービスにsshキーを登録しています。 これらは簡単にインポートできます:
ssh-import-id <username-on-remote-service>
接頭辞
lp:
gh:
は代わりにgithubからツールをフェッチさせます。U2F/FIDOによる二要素認証
OpenSSH8.2U2F/FIDOハードウェア認証デバイスのサポートが追加されました。 これらのデバイスは、認証を完了するためにハードウェアトークンが存在する必要があるため、既存のキーベース認証の上に追加のセキュリティ層を提供す使用と設定は非常に簡単です。
唯一の追加の手順は、ハードウェアデバイスで使用できる新しいキーペアを生成することです。 そのためには、使用できる2つのキータイプがあります:
ecdsa-sk
ed25519-sk
。 前者はより広範なハードウェアサポートを持っていますが、後者はより最近のデバイスを必要とするかもしれません。キーペアが生成されると、通常opensshで他のタイプのキーを使用するのと同じように使用できます。 唯一の要件は、秘密鍵を使用するために、U2Fデバイスがホスト上に存在する必要があることです。たとえば、U2Fデバイスを接続して、それに使用するキーペアを生成します。$ ssh-keygen -t ecdsa-skGenerating public/private ecdsa-sk key pair.You may need to touch your authenticator to authorize key generation. <-- touch deviceEnter file in which to save the key (/home/ubuntu/.ssh/id_ecdsa_sk): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/ubuntu/.ssh/id_ecdsa_skYour public key has been saved in /home/ubuntu/.ssh/id_ecdsa_sk.pubThe key fingerprint is:SHA256:V9PQ1MqaU8FODXdHqDiH9Mxb8XK3o5aVYDQLVl9IFRo ubuntu@focal
パブリックパーツをサーバーに転送するだけで、
~/.ssh/authorized_keys
そして、あなたは行く準備が整いました。$ ssh -i .ssh/id_ecdsa_sk [email protected] user presence for key ECDSA-SK SHA256:V9PQ1MqaU8FODXdHqDiH9Mxb8XK3o5aVYDQLVl9IFRo <-- touch deviceWelcome to Ubuntu Focal Fossa (GNU/Linux 5.4.0-21-generic x86_64)(...)[email protected]:~$