macOSからRocky LinuxへパスワードなしでSSH接続する方法

はじめに
この記事では、SSHでパスワードなしでログインする方法を紹介します。
macOSからRocky
Linuxにパスワードなしでログインするには、SSH公開鍵認証を設定します。この場合、秘密鍵の名前はid_rsa_rocky
とします。
手順
鍵の生成(必要に応じて)
macOSで、id_rsa_rocky
という名前の鍵がまだない場合は生成します。
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa_rocky
-t rsa
:RSA鍵を指定-b 4096
:鍵の長さを指定(4096ビット)-f ~/.ssh/id_rsa_rocky
:鍵のファイル名を指定
パスフレーズを求められた場合は、空のままEnterを押すと、パスワードなしでログインできます。
公開鍵をRocky Linuxに転送
次に、公開鍵をRocky Linuxにコピーします。
ssh-copy-id -i ~/.ssh/id_rsa_rocky.pub user@rocky-linux-host
~/.ssh/id_rsa_rocky.pub
:生成した公開鍵user@rocky-linux-host
:Rocky Linuxのユーザー名とホスト名またはIPアドレス
Rocky Linux側での設定確認
公開鍵が正しく配置されていることを確認します。
ログイン後、~/.ssh/authorized_keys
に公開鍵が追加されているか確認します。
cat ~/.ssh/authorized_keys
SSHディレクトリとファイルのパーミッションを確認します。
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
Rocky LinuxのSSH設定ファイル/etc/ssh/sshd_configに以下の設定が含まれているか確認します。
sudo vi /etc/ssh/sshd_config
以下の行を探して確認または修正します:
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication yes
PermitRootLogin prohibit-password
ChallengeResponseAuthentication no
変更した場合はSSHサービスを再起動します:
sudo systemctl restart sshd
macOSでSSH設定を更新
~/.ssh/config
に設定を追加して、指定した鍵を使うようにします。
vi ~/.ssh/config
以下の内容を追加します:
Host rocky-linux-host
HostName rocky-linux-host
User user
IdentityFile ~/.ssh/id_rsa_rocky
Host
:任意のホスト名(短縮名として使えます)HostName
:Rocky Linuxのホスト名またはIPアドレスUser
:ログインに使用するユーザー名IdentityFile
:鍵ファイルのパス
保存後、ファイルのパーミッションを確認します。
chmod 600 ~/.ssh/config
接続テスト
以下のコマンドで接続をテストします。
ssh rocky-linux-host
問題がなければパスワードなしでログインできます。
SSH設定を変更してディレクトリ権限の制限を緩和する
通常、サーバー側の /home/rocky
はディレクトリ権限を700
にする必要があります。そうしないと、パスワードを要求されてしまいます。何かの理由でホームディレクトリを700
にできない場合、SSHが公開鍵認証を許可するように設定を調整することが可能です。以下の手順で対応してください。
解決方法
SSHの設定で、ディレクトリ権限の厳密なチェックを無効化できます。ただし、これはセキュリティリスクを伴うため注意が必要です。
SSH設定ファイルを編集します。
sudo vi /etc/ssh/sshd_config
次の設定を追加または変更します:
StrictModes no
- この設定を有効にすると、
authorized_keys
ファイルの権限が厳密にはチェックされなくなります。
SSHサービスを再起動します。
sudo systemctl restart sshd
関連記事
- diff(colordiff)|シェル
- Raspberry Piでカメラモジュールの使い方【コマ抜き撮影】
- tarコマンドでmacOSのバックアップする方法
- はじめての「twig」基本的な使い方を解説
- macOSで特定のサイトへのアクセスをDNSレベルで禁止させる方法