目次:
Secure Shell(SSH)は、クライアントとサーバー間の安全な接続に使用される暗号化ネットワークプロトコルであり、さまざまな認証メカニズムをサポートしています。 最も一般的な2つのメカニズムは、パスワードベースの認証と公開キーベースの認証です。
このチュートリアルでは、SSHキーベースの認証のセットアップ方法と、パスワードを入力せずにLinuxサーバーに接続する方法を示します。
SSHパスワードレスログインのセットアップ
LinuxでパスワードなしのSSHログインを設定するには、公開認証キーを生成し、リモートホスト
~/.ssh/authorized_keys
ファイルに追加するだけです。
次の手順では、パスワードなしのSSHログインを構成するプロセスについて説明します。
-
既存のSSHキーペアを確認します。
新しいSSHキーペアを生成する前に、既存のキーを上書きしたくないため、クライアントマシンに既にSSHキーがあるかどうかを確認します。
次のlsコマンドを実行して、既存のSSHキーが存在するかどうかを確認します。
ls -al ~/.ssh/id_*.pub
既存のキーがある場合は、それらを使用して次の手順をスキップするか、古いキーをバックアップして新しいキーを生成できます。
新しいSSHキーペアを生成します。
次のコマンドは、コメントとしてメールアドレスを使用して、新しい4096ビットのSSHキーペアを生成します。
ssh-keygen -t rsa -b 4096 -C "[email protected]"
Enter
を押して、デフォルトのファイルの場所とファイル名を受け入れます。Enter file in which to save the key (/home/yourusername/.ssh/id_rsa):
次に、
ssh-keygen
ツールは安全なパスフレーズの入力を求めます。 パスフレーズを使用するかどうかはあなた次第です。パスフレーズを使用することを選択した場合、セキュリティの層が追加されます。 ほとんどの場合、開発者とシステム管理者は完全に自動化されたプロセスに役立つため、パスフレーズなしでSSHを使用します。 パスフレーズを使用したくない場合は、Enter
押してEnter
Enter passphrase (empty for no passphrase):
相互作用全体は次のようになります。
SSHキーが確実に生成されるようにするには、新しいプライベートキーとパブリックキーを次のようにリストします。
ls ~/.ssh/id_*
/home/yourusername/.ssh/id_rsa /home/yourusername/.ssh/id_rsa.pub
公開鍵をコピーします
SSHキーペアを生成したので、パスワードなしでサーバーにログインできるようにするには、管理するサーバーに公開キーをコピーする必要があります。
公開鍵をサーバーにコピーする最も簡単な方法は、
ssh-copy-id
というコマンドを使用することです。 ローカルマシンのターミナルタイプ:ssh-copy-id remote_username@server_ip_address
remote_username
パスワードの入力をremote_username
ます。remote_username@server_ip_address's password:
ユーザーが認証されると、公開キーがリモートユーザー
authorized_keys
ファイルに追加され、接続が閉じられます。何らかの理由で
ssh-copy-id
ユーティリティがローカルコンピューターで使用できない場合、次のコマンドを使用して公開キーをコピーできます。cat ~/.ssh/id_rsa.pub | ssh remote_username@server_ip_address "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
SSHキーを使用してサーバーにログインします
上記の手順を完了すると、パスワードの入力を求められることなく、リモートサーバーにログインできるようになります。
それをテストするには、SSH経由でサーバーにログインしてみてください。
ssh remote_username@server_ip_address
すべてがうまくいけば、すぐにログインできます。
SSHパスワード認証を無効にする
サーバーに追加のセキュリティレイヤーを追加するには、SSHのパスワード認証を無効にします。
SSHパスワード認証を無効にする前に、パスワードなしでサーバーにログインでき、ログインしているユーザーがsudo特権を持っていることを確認してください。
次のチュートリアルでは、sudoアクセスを構成する方法について説明します。
-
sudo特権を持つユーザーまたはrootとして、SSHキーを使用してリモートサーバーにログインします。
ssh sudo_user@server_ip_address
SSH構成ファイル
/ etc / ssh / sshd_config/etc/ssh/sshd_config
、次のディレクティブを検索して、次のように変更します。PasswordAuthentication no ChallengeResponseAuthentication no UsePAM no
完了したら、ファイルを保存し、SSHサービスを再起動します。
UbuntuまたはDebianサーバーで、次のコマンドを実行します。
sudo systemctl restart ssh
CentOSまたはFedoraサーバーで、次のコマンドを実行します。
sudo systemctl restart sshd
結論
このチュートリアルでは、ユーザーパスワードを入力せずにリモートサーバーにログインできるようにするSSHキーベースの認証を設定する方法を学びました。 同じキーを複数のリモートサーバーに追加できます。
また、SSHパスワード認証を無効にして、サーバーにセキュリティレイヤーを追加する方法も示しました。
sshセキュリティ