Secure Shell(SSH)は、クライアントとサーバー間の安全な接続に使用される暗号化ネットワークプロトコルであり、さまざまな認証メカニズムをサポートします。
最も一般的な2つのメカニズムは、パスワードベースの認証と公開鍵ベースの認証です。 SSHキーの使用は、従来のパスワード認証よりも安全で便利です。
このチュートリアルでは、Debian9システムでSSHキーを生成する方法について説明します。また、SSHキーベースの認証を設定し、パスワードを入力せずにリモートLinuxサーバーに接続する方法についても説明します。
最初に新しいSSHキーペアを生成する前に、Debianクライアントマシンで既存のSSHキーを確認してください。これを行うには、次のlsコマンドを実行します。
ls -l ~/.ssh/id_*.pub
上記のコマンドの出力にNo such file or directory
のようなものが含まれている場合 またはno matches found
これは、SSHキーがないことを意味し、次の手順に進んで新しいSSHキーペアを生成できます。
既存のキーがある場合は、それらを使用して次の手順をスキップするか、古いキーをバックアップして新しいキーを生成することができます。
次のコマンドを使用して、コメントとしてメールアドレスを使用して新しい4096ビットのSSHキーペアを生成することから始めます。
ssh-keygen -t rsa -b 4096 -C "[email protected]"
出力は次のようになります。
Enter file in which to save the key (/home/yourusername/.ssh/id_rsa):
Enter
を押します デフォルトのファイルの場所とファイル名を受け入れます。
次に、安全なパスフレーズを入力するように求められます。パスフレーズを使用するかどうかは、あなた次第です。パスフレーズを使用すると、セキュリティの層がキーに追加されます。
Enter passphrase (empty for no passphrase):
パスフレーズを使用したくない場合は、Enter
を押してください。 。
全体の相互作用は次のようになります:
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@server_ip_address's password:
ユーザーが認証されると、公開鍵~/.ssh/id_rsa.pub
リモートユーザーに追加されます~/.ssh/authorized_keys
ファイル、接続が閉じられます。
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'username@server_ip_address'"
and check to make sure that only the key(s) you wanted were added.
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権限を持っていることを確認してください。
リモートサーバーにログインします:
ssh sudo_user@server_ip_address
SSH構成ファイル/etc/ssh/sshd_config
を開きます :
sudo vim /etc/ssh/sshd_config
次のディレクティブを検索し、次のように変更します。
/ etc / ssh / sshd_configPasswordAuthentication no
ChallengeResponseAuthentication no
UsePAM no
完了したら、ファイルを保存し、次のコマンドを使用してSSHサービスを再起動します。
sudo systemctl restart ssh
この時点で、パスワードベースの認証は無効になっています。