公開鍵認証を使用してSSH経由でUbuntuサーバーに接続しようとしています。何らかの理由で「権限が拒否されました(公開鍵)」というメッセージが表示されます。クライアントで実行するたびに
ssh -i ~/.ssh/id_rsa <username>@<ip> -p <port>
。
私のサーバーのauth.logには、次の出力があります。
sshd[1425]: Connection closed by <client-ip> [preauth]
ただし、同じユーザー名を使用してサーバーに物理的にログインすると、クライアントの次のSSH接続は成功します。ただし、物理的にログアウトすると、クライアントの次のSSHセッションは失敗します。
/etc/ssh/sshd_config
# What ports, IPs and protocols we listen for
Port <port>
# Use these options to restrict which interfaces/protocols sshd will bind to
#ListenAddress ::
#ListenAddress 0.0.0.0
Protocol 2
# HostKeys for protocol version 2
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key
#Privilege Separation is turned on for security
UsePrivilegeSeparation yes
# Lifetime and size of ephemeral version 1 server key
KeyRegenerationInterval 3600
ServerKeyBits 1024
# Logging
SyslogFacility AUTH
LogLevel INFO
# Authentication:
LoginGraceTime 120
PermitRootLogin no
StrictModes yes
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile %h/.ssh/authorized_keys
# Don't read the user's ~/.rhosts and ~/.shosts files
IgnoreRhosts yes
# For this to work you will also need host keys in /etc/ssh_known_hosts
RhostsRSAAuthentication no
# similar for protocol version 2
HostbasedAuthentication no
PermitEmptyPasswords no
ChallengeResponseAuthentication no
PasswordAuthentication no
X11Forwarding yes
X11DisplayOffset 10
PrintMotd no
PrintLastLog yes
TCPKeepAlive yes
#UseLogin no
AcceptEnv LANG LC_*
Subsystem sftp /usr/lib/openssh/sftp-server
UsePAM no
ClientAliveInterval 30
ClientAliveCountMax 99999
なぜこれが起こるのかについての手がかりはありますか?それともセキュリティに関する提案がありますか?ありがとうございます!
答え1
コメントで述べたように、暗号化されたホームディレクトリを使用しており、おそらく次のものを使用します。pam_mountインストールしてください。
pam_mount は、ログイン時に取得したパスワードを使用してパーティションをマウントします。 SSH公開鍵でログインしようとしているので、2つの問題があります。
- 公開鍵認証中にパスワードは送信されないため、それを使用してホームディレクトリをマウントすることはできません。
- pam_mount を使用すると、ホームディレクトリがマウントされます。後ろにログインしましたが、ファイルをインポートする必要があり
sshd
ますauthorized_keys
今後ログインするとインストールされません。
これらの問題のいずれかが動作を妨げるのに十分です。
唯一の解決策は、ホームディレクトリから公開鍵を取得することです。これは実際には非常に簡単です。
まず、authorized_keys
ホームディレクトリからファイルをコピーします。
cp -a /home/$USER/.ssh/authorized_keys /home/$USER-authorized_keys
次に、sshd
以下を追加してファイルの使用を示します/etc/ssh/sshd_config
(既存のエントリがある場合は置き換えます)。
AuthorizedKeysFile .ssh/authorized_keys /home/%u-authorized_keys
そしてバウンスsshd
。
ただし、これはホームディレクトリをマウントしないことに注意してください。ホームディレクトリの復号化にはまだパスワードが必要です。 pam_mountの設定方法によっては、パスワードの入力を求められたり、シェルに入って家のマウントが解除されることがあります。