パスワードなしのssh b/w A
からB
およびB
からA
もセットアップしようとしました。両方のマシンでssh-keygen -trsa
を使用して公開鍵と秘密鍵を生成しました。 ssh-copy-id
ユーティリティを使用して、A
からB
に公開鍵をコピーし、B
からA
にコピーしました。
パスワードなしのsshは、A
からB
に機能しますが、not
からB
にA
に機能します。 〜/ ssh /フォルダーのアクセス許可を確認しましたが、正常なようです。
A's .ssh
フォルダーのアクセス許可:
-rw------- 1 root root 13530 2011-07-26 23:00 known_hosts
-rw------- 1 root root 403 2011-07-27 00:35 id_rsa.pub
-rw------- 1 root root 1675 2011-07-27 00:35 id_rsa
-rw------- 1 root root 799 2011-07-27 00:37 authorized_keys
drwxrwx--- 70 root root 4096 2011-07-27 00:37 ..
drwx------ 2 root root 4096 2011-07-27 00:38 .
B's .ssh
フォルダーのアクセス許可:
-rw------- 1 root root 884 2011-07-07 13:15 known_hosts
-rw-r--r-- 1 root root 396 2011-07-27 00:15 id_rsa.pub
-rw------- 1 root root 1675 2011-07-27 00:15 id_rsa
-rw------- 1 root root 2545 2011-07-27 00:36 authorized_keys
drwxr-xr-x 8 root root 4096 2011-07-06 19:44 ..
drwx------ 2 root root 4096 2011-07-27 00:15 .
A
はubuntu 10.04(OpenSSH_5.3p1 Debian-3ubuntu4、OpenSSL 0.9.8k 2009年3月25日)B
はdebianマシンです(OpenSSH_5.1p1 Debian-5、OpenSSL 0.9.8g 2007年10月19日)
A
から:
#ssh B
正常に動作します。
B
から:
#ssh -vvv A
...
...
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug2: key: /root/.ssh/identity ((nil))
debug2: key: /root/.ssh/id_rsa (0x7f1581f23a50)
debug2: key: /root/.ssh/id_dsa ((nil))
debug3: Wrote 64 bytes for a total of 1127
debug1: Authentications that can continue: publickey,password
debug3: start over, passed a different list publickey,password
debug3: preferred gssapi-keyex,gssapi-with-mic,gssapi,publickey,keyboard-interactive,password
debug3: authmethod_lookup publickey
debug3: remaining preferred: keyboard-interactive,password
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Trying private key: /root/.ssh/identity
debug3: no such identity: /root/.ssh/identity
debug1: Offering public key: /root/.ssh/id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug3: Wrote 368 bytes for a total of 1495
debug1: Authentications that can continue: publickey,password
debug1: Trying private key: /root/.ssh/id_dsa
debug3: no such identity: /root/.ssh/id_dsa
debug2: we did not send a packet, disable method
debug3: authmethod_lookup password
debug3: remaining preferred: ,password
debug3: authmethod_is_enabled password
debug1: Next authentication method: password
[email protected]'s password:
つまり、ファイル/root/id_rsa
を使用して認証を行っていないことを意味します。両方のマシンでもssh-add
コマンドを実行しました。
/etc/ssh/sshd_config
ファイルの認証部分は
# Authentication:
LoginGraceTime 120
PermitRootLogin yes
StrictModes yes
RSAAuthentication yes
PubkeyAuthentication yes
#AuthorizedKeysFile %h/.ssh/authorized_keys
# Don't read the user's ~/.rhosts and ~/.shosts files
アイデアが不足しています。任意の助けをいただければ幸いです。
次の手順に従っていることを確認してください。
マシンA上
ターミナルを開き、次のようにコマンドを入力します。
root@aneesh-pc:~# id
私たちがルートであることを確認するだけです。
上記のコマンドが以下のようなものを出力する場合、私たちはsu
コマンドを使用してルートに切り替えます
uid=0(root) gid=0(root) groups=0(root)
1)キーを作成します。
ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
49:7d:30:7d:67:db:58:51:42:75:78:9c:06:e1:0c:8d root@aneesh-pc
The key's randomart image is:
+--[ RSA 2048]----+
| ooo+==B|
| . E=.o+B|
| . . .+.*o|
| . . . ...|
| S |
| |
| |
| |
| |
+-----------------+
パスフレーズを使用していません。必要な場合は使用できます。
2)公開鍵をマシンBの.ssh/authorized_keys
ファイルにコピーします
root@aneesh-pc:~# ssh-copy-id -i /root/.ssh/id_rsa.pub root@mylap
root@mylap's password:
ssh 'root@mylap'
を使用してマシンにログインして、チェックインします。
~/.ssh/authorized_keys
予期しないキーが追加されていないことを確認してください。
Mylapを、ログインするマシン(マシンB)のホスト名またはIPに置き換えます
3)パスワードなしでBにログインする
root@aneesh-pc:~# ssh root@mylap
Warning: Permanently added 'mylap,192.168.1.200' (RSA) to the list of known hosts.
Welcome to Ubuntu 11.04 (GNU/Linux 2.6.38-8-generic x86_64)
* Documentation: https://help.ubuntu.com/
Last login: Wed Jul 27 15:23:58 2011 from streaming-desktop.local
aneesh@mylap:~$
マシンB上
4)マシンAに再度ログインするためのキーを作成します
root@mylap:~# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
35:9f:e7:81:ed:02:f9:fd:ad:ef:08:c6:4e:19:76:b1 root@streaming-desktop
The key's randomart image is:
+--[ RSA 2048]----+
| |
| |
| o . |
| . + + o |
| S o * E |
| = O . |
| O + |
| + o o.|
| . o+=|
+-----------------+
5)公開鍵をマシンAの.ssh/authorized_keys
ファイルにコピーします
root@mylap:~# ssh-copy-id -i /root/.ssh/id_rsa.pub root@aneesh-pc
Warning: Permanently added 'aneesh-pc,192.168.1.20' (RSA) to the list of known hosts.
root@aneesh-pc's password:
ssh 'root@aneesh-pc'
を使用してマシンにログインして、チェックインします。
.ssh/authorized_keys
予期しないキーが追加されていないことを確認してください。
6)パスワードなしでAにログインする
ssh root@aneesh-pc
Warning: Permanently added 'aneesh-pc,192.168.1.20' (RSA) to the list of known hosts.
Welcome to Ubuntu 11.04 (GNU/Linux 2.6.38-8-generic x86_64)
* Documentation: https://help.ubuntu.com/
Last login: Tue Jul 26 18:52:55 2011 from 192.168.1.116
これらの手順を完了できる場合、完了です。これで、ssh-key(公開鍵)が有効なログインを持つ2台のマシンができました。
password-less sshのセットアップ の後、ユーザーパスワードの入力を求められました。リモートマシンで/var/log/auth.log
を見ると、問題が指摘されています。
sshd[4215]: Authentication refused: bad ownership or modes for directory /home/<user>
そのため、必ず正しく設定してください。
chmod o-w ~/
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
他のユーザーに.ssh
フォルダーを上書きすることを禁止することは明らかですが、ホームフォルダーに同じ要件を設定するのは難しいことです。
また、/etc/ssh/ssd_config
をチェックして、RSAAuthentication
およびPubkeyAuthentication
オプションが無効になっていないことを確認してください。デフォルトはyes
であるため、問題になりません。
おそらくより高いレベルのアクセス許可の問題。 グループおよびその他からホームディレクトリおよび.sshディレクトリへの書き込み権限を削除する必要があります。これらの権限を修正するには、chmod 755 ~ ~/.ssh
またはchmod go-w ~ ~/.ssh
を実行します。
それでも問題が解決しない場合は、ログで次のgrepを発行します。
Sudo egrep -i 'ssh.*LOCAL_USER_NAME' /var/log/secure
(LOCAL_USER_NAME
をローカルユーザー名に置き換え...)
Sshd認証情報がセキュリティログに記録されていると仮定すると、問題について詳しく説明されているはずです。次のようなエラーが表示される場合:
DATE HOSTNAME sshd [1317]:認証が拒否されました:ディレクトリ/ path/to/some/directoryの所有権またはモードが正しくありません
これは上記の問題です。問題のディレクトリを見つけて、グループなどから書き込み権限を削除する必要があります。
ホームディレクトリへの書き込み許可を制限する必要がある理由については(.ssh以降のディレクトリで許可が既に制限されている場合でも)、他のユーザーが.sshディレクトリの名前を変更して新しいディレクトリを作成できるようにします。ほとんどのユーザーの修正は、おそらくディレクトリの内容を確認するのではなく、アクセス権を変更することです(アクセス権が間違っているため)そのままでは使用できません...
TLDNR:グループおよび/または他のユーザーのホームディレクトリへの書き込みアクセスを許可すると、sshはパスワードログインを強制します。
各マシンでrootアカウントを使用していますか?通常、Ubuntuでは、ユーザーアカウントを使用し、必要に応じてSudo権限を付与します。
非rootユーザーSudo chown $USER -R ~/.ssh
を使用して問題を解決できる場合
その他の確認事項:
bのid_rsa.pub
がAのauthorized_keys
にあることを再確認してください。
aの/etc/ssh/sshd_config
を含む
PermitRootLogin yes
RSAAuthentication yes
PubkeyAuthentication yes