web-dev-qa-db-ja.com

SSH公開キー認証が機能しない

Ubuntu Server 13.04(B)からの認証のために、Ubuntu Server 12.04(A)上のSSHサーバーの公開鍵認証を設定するのに問題があります。

私が今やっていること(私は here の指示に従おうとしています):

  • B:ssh-keygen -C ""で新しいキーを作成し、パスフレーズを使用せずに/.ssh/id_rsaに書き込みます-エラーは発生しません
  • B:ssh-copy-id -i /.ssh/id_rsa user@Host-aを実行します-また、成功メッセージ
  • B:ssh -i /.ssh/id_rsa user@Host-a-user@Host-aのパスワードを入力する必要があります

Aで、/.ssh/authorized_keysの実行後にssh-copy-idが変更されているかどうかを確認しました。また、両方のデバイスでこれを/etc/ssh/sshd_configに追加しました:

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile /.ssh/authorized_keys

ここで何が問題になるのか誰にも分かりますか?


マシンAの/var/log/auth.logの末尾は次のとおりです。

Jun 13 22:17:56 laptop-camil sshd[12344]: Server listening on 0.0.0.0 port 22.
Jun 13 22:17:56 laptop-camil sshd[12344]: Server listening on :: port 22.
Jun 13 22:18:27 laptop-camil sshd[12345]: Authentication refused: bad ownership or modes for directory /.ssh
Jun 13 22:18:30 laptop-camil sshd[12345]: Accepted password for camilstaps from 164.138.27.37 port 48407 ssh2
Jun 13 22:18:30 laptop-camil sshd[12345]: pam_unix(sshd:session): session opened for user camilstaps by (uid=0)
Jun 13 22:18:35 laptop-camil sshd[12464]: Received disconnect from 164.138.27.37: 11: disconnected by user
Jun 13 22:18:35 laptop-camil sshd[12345]: pam_unix(sshd:session): session closed for user camilstaps
Jun 13 22:18:42 laptop-camil sshd[12516]: Authentication refused: bad ownership or modes for directory /.ssh
Jun 13 22:18:44 laptop-camil sshd[12516]: Connection closed by <Host-b> [preauth]
10
Keelan

ログファイルの内容、特に/var/log/auth.log? .sshディレクトリとファイルのアクセス許可を再確認することもできます。

私は、この種のアクセスのためにsshd_configを自分で変更する必要はありませんでした。あなたの変更が物事、特にAuthorizedKeysFile行を壊したかどうか疑問に思っています。通常、authorized_keysは$USER/.sshの下に配置します。

私のサーバーのいずれかのユーザーからの許可は次のとおりです。

:~/.ssh$ ls -ld .
drwx------ 2 rrd rrd 4096 May 28 17:57 .

:~/.ssh$ ll
total 280
-rw-r----- 1 rrd rrd   4351 May 22 16:20 authorized_keys
-rw------- 1 rrd rrd   1679 Apr 27  2012 id_rsa
-rw-r--r-- 1 rrd rrd    399 Apr 27  2012 id_rsa.pub
-rw-r--r-- 1 rrd rrd 266138 Jun 13 00:18 known_hosts

個々のファイルが少なくともこの制限を受けていることを確認してください。

Guntbertが指摘しているように、ディレクトリとファイルが所有者であることも確認してください。それ以外の場合、アクセス許可は意味がありません(または機能しません)。

Bのauthorized_keysのキーの所有者は誰ですか? (キーの後にuser @ Hostと書かれているビット。)root @ Aですか?

つまり、~/.ssh/authorized_keysを見て、セットアップのbert@etherbertと同等のものは何ですか:

ssh-rsa AAAA...ffsII8dSaDF33 bert@etherbet

テストのためにリモートの.ssh/authorizedキーを手動で編集し、接続を開始するユーザーのid_rsa.pubコンテンツを入力します。

リモートauthorized_keysファイルにキーを持つユーザーから来ていることを確認してください。

7
belacqua

ディレクトリ~/.sshは、rootではなくユーザーが所有する必要があります。それを変更して、それは動作します。

Ssh-agentを使用するたびに秘密鍵のパスフレーズを入力する必要を避けるため。 ssh-add .ssh/id_rsaはキーをエージェントに追加し、それ以降、エージェントはsshにキーを提供します。

4
guntbert

これは古い質問であり、すでに回答されていますが、ユーザーが(ecryptfsなどを使用して)ホームディレクトリを暗号化している場合、sshデーモンは〜/ .ssh/authorized_keysファイルを見ることができません。その場合は、 here にリストされているソリューションに従ってください。

このソリューションでは、sshd構成(/ etc/ssh/sshd_config)を変更し、AuthorizedKeysFile/etc/ssh/%u/authorized_keysに変更し、authorized_keysファイルを/ etc/ssh/username/authorized_keysファイルにコピーすることをお勧めします/ etc/ssh/usernameの所有権とsshdで必要な適切なアクセス許可)。

2
journeyer

私には何も機能しませんでした。なぜか分からないのですか?私はそれぞれの解決策を試しました。

最初の

ssh-copy-id:id_rsaおよびid_rsa.pubをコピーしませんでした

2番目

ssh-agent $ Shell

ssh-add -L

ssh-add

ssh-copy-id -iリモートホスト

両方とも機能しませんでした。私は不運だと思います。誰かが.sshフォルダの権限をルートから変更するように言っていました。私はそれがより良い選択肢ではないと思った。上記のケースが失敗したときに私がしていたこと。サーバーに新しいキーを作成し、このキーをgithub/gitlabに保存します。それはクールな方法でもありません。ここで代替手段を試しましたが、それが誰かを助けるかもしれないことを願っています。

最初に、書き込み可能なユーザー許可を持つリモートサーバー上にフォルダーを作成します。次に、ローカルマシンで以下の手順に従います

cd〜/ .ssh

scp -r * [email protected]。**:path_to_writable_folder_on_remote_server

そして、私はリモートサーバーにログインしてから

cd path_to_that_folder_where_I_copied_keys

その後

mv *〜/ .ssh

(なぜ)最後に、うまくいきました。

0
Vineet