web-dev-qa-db-ja.com

パスワードなしでローカルホストにSSHで接続する方法は?

編集:行われたことを正確に反映します。

パスワードなしでlocalhostにSSHで接続する必要があります。通常の方法(公開鍵を使用)では機能しません。

user@PC:~$ rm -rf .ssh/*
user@PC:~$ ssh-keygen -t rsa > /dev/null 
Enter file in which to save the key (/home/user/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
user@PC:~$ ls .ssh/
id_rsa  id_rsa.pub
user@PC:~$ ssh-copy-id -i localhost 
The authenticity of Host 'localhost (::1)' can't be established.
RSA key fingerprint is f7:87:b5:4e:31:a1:72:11:8e:5f:d2:61:bd:b3:40:1a.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'localhost' (RSA) to the list of known hosts.
user@localhost's password: 
Now try logging into the machine, with "ssh 'localhost'", and check in:

  .ssh/authorized_keys

to make sure we haven't added extra keys that you weren't expecting.

user@PC:~$ ssh-agent $Shell
user@PC:~$ ssh-add -L
The agent has no identities.
user@PC:~$ ssh-add 
Identity added: /home/user/.ssh/id_rsa (/home/user/.ssh/id_rsa)
user@PC:~$ ssh-add -L
ssh-rsa ...MY KEY HERE

user@PC:~$ ssh-copy-id -i localhost 
user@localhost's password: 
Now try logging into the machine, with "ssh 'localhost'", and check in:

  .ssh/authorized_keys

to make sure we haven't added extra keys that you weren't expecting.

user@PC:~$ ssh localhost echo 'testing'
user@localhost's password: 

user@PC:~$ 

したがって、最後のコマンドで確認できるように、パスワードを要求しています!!!どうすれば修正できますか? Ubuntu-10.04、OpenSSH_5.3p1

EDIT2:

Sshdに関する情報を追加する

user@PC:~$ cat /etc/ssh/sshd_config | grep Authentication
# Authentication:
RSAAuthentication yes
PubkeyAuthentication yes
RhostsRSAAuthentication no
HostbasedAuthentication no
# Uncomment if you don't trust ~/.ssh/known_hosts for RhostsRSAAuthentication
ChallengeResponseAuthentication no
# PasswordAuthentication yes
#KerberosAuthentication no
#GSSAPIAuthentication no
# be allowed through the ChallengeResponseAuthentication and
# PasswordAuthentication.  Depending on your PAM configuration,
# PAM authentication via ChallengeResponseAuthentication may bypass
# PAM authentication, then enable this but set PasswordAuthentication
# and ChallengeResponseAuthentication to 'no'.

EDIT3:$ ssh -vv localhostからの結果の追加

$ssh -vv localhost
...
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: publickey
debug1: Trying private key: /home/user/.ssh/identity
debug1: Offering public key: /home/user/.ssh/id_rsa
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey,password
debug1: Trying private key: /home/user/.ssh/id_dsa
debug2: we did not send a packet, disable method
debug1: Next authentication method: password
user@localhost's password: 

EDIT4:

ファイルが同じで、md5sumが一致するかどうかを確認するだけ

17
Canesin

問題を発見しました。

デバッグでサーバーを実行する:

$sshd -Dd

Auth_keyを読み取れなかった

$chmod 750 $HOME

修正しました。

3
Canesin

まず第一に、あなたは自分の行動を理解する必要があります:

user@PC:~$ cat .ssh/id_rsa.pub | ssh localhost 'cat >> .ssh/authorized_keys'

公開鍵.ssh/id_rsa.pubをsshを介して同じホスト(つまり、localhostと同じホスト)にコピーしています。 localhostを他のホストに置き換えれば、それはより理にかなっています(しかし、それを行う方法を学ぶためにこれを試みている場合は問題ありません)。

リモートホスト(または現在のホスト)で公開鍵のコピーを取得したら、実際のホストでssh-agent/ssh-addを呼び出して、認証にそれを使用していることを確認する必要があります。

$ eval `ssh-agent`
$ ssh-add

次に、パスフレーズを指定した場合は、ssh-addの後にパスフレーズを入力するように要求されます。パスフレーズなしで秘密鍵を生成した場合は、それだけです。

10
Torian

次の手順を実行します

ssh-keygen -t rsa -C "[email protected]"
# Creates a new ssh key, using the provided email as a label
# Generating public/private rsa key pair.

デフォルトのファイルと空のパスフレーズを使用します(次の2つの手順でEnterキーを押すだけです)

# start the ssh-agent in the background
eval "$(ssh-agent -s)"
# Agent pid 59566
ssh-add 

〜/ .ssh/id_rsa.pubの内容を〜/ .ssh/authorized_keysにコピーします

以下が権限であることを確認してください

 ls -l .ssh/
 total 20
-rw-r--r--. 1 swati swati  399 May  5 14:53 authorized_keys
-rw-r--r--. 1 swati swati  761 Jan 12 15:59 config
-rw-------. 1 swati swati 1671 Jan 12 15:44 id_rsa
-rw-r--r--. 1 swati swati  399 Jan 12 15:44 id_rsa.pub
-rw-r--r--. 1 swati swati  410 Jan 12 15:46 known_hosts 

また、.sshディレクトリの権限が付与されていることを確認してください。これも重要です

drwx------.   2 swati swati    4096 May  5 14:56 .ssh
2
swatisinghi

サーバー構成を簡素化する

パスワードベースの認証を無効にする必要があるかもしれません。これは私が使用するsshd_configです

_Port 22
Protocol 2
PermitRootLogin no
StrictModes yes
PasswordAuthentication no
ChallengeResponseAuthentication no
MaxStartups 2
AllowUsers peter paul mary
LogLevel VERBOSE
_

最初に最小限のものを試してから、追加の機能が必要なときに追加してください。


更新:

サーバーログを確認する

EDIT3から、クライアントがパスワードベースの認証を試みる前に、公開鍵認証が失敗することがわかります。サーバーのsyslogには、sshdからのいくつかのメッセージが含まれている可能性があります。

変更された構成を再読み込み

sshdに信号を送り、設定の変更をリロードすることを忘れないでください。例えば。 kill -HUP $(cat /etc/sshd.pid)

1
RedGrittyBrick

私にとってはそれはとても簡単でした

cat id_rsa.pub >> authorized_keys
0
user695025

私は同じ問題を抱えていましたが、パスワードなしのログインを作成するために次の3つの手順を実行しました。

1. ssh-keygen -t rsa
Press enter for each line
2. cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
3. chmod og-wx ~/.ssh/authorized_keys
0
Hadi Rahjoo

Sshdが$ HOME/.sshを読み取れないようにするRed Hat Enterprise Linux 6.5 SELinux機能の別の解決策は、restoreconを使用することです。こちらのanswserを参照してください https://superuser.com/a/764020/213743

0
buzz3791

上記の投稿については、同じ問題に直面しながら、行を変更しました

PasswordAuthenticationいいえ

/ etc/ssh/sshd_configファイルで動作しました。

さらに、おそらくそれを使用する方が良いです

サービスsshd再起動

sshdの設定変更をリロードします。

0
Nicolas