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


17

編集:何が行われたかを正確に入れます。

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が一致するかどうかを確認するだけです


あなたは持っていますRSAAuthentication yesし、PubkeyAuthentication yesあなたの/ etc / ssh / sshd_configに?ssh -vv localhostは何を表示しますか?私はこれを10.04ボックスで試しましたが、問題はありませんでした
。– Doon

Hy Doon、確かに..両方ともそうです..質問にssh -vvの出力を追加しました。
カネシン

すでにアクセスできるのに、なぜローカルホストにsshする必要があるのですか?
vtest

並列処理ソフトウェアは、ローカルのssh / rshの使用
Canesin

質問に回答を投稿したり、タイトルに「解決済み」を入れたりしないでください。あなたは答えを提供することで正しいことをしました。回答を受け入れると、システムは問題が解決したことを示します。
ChrisF

回答:


10

まず最初に、あなたが何をしているかを理解する必要があります。

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。パスフレーズなしで秘密鍵を生成した場合、それだけです。


はい、私はコマンドを理解しています。キーを使用して通常の作業を行ったことを明確にするために、そのようにしました。私はssh-addを行いました...パスフレーズは要求しません(作成に何も使用していなかったため)..繰り返しになりますが、$ ssh localhost lsを実行すると、パスワードが要求されます
Canesin

したがって、実行した場合はssh-add、質問を編集して、すべてを行ってください。より多くの情報を提供すればするほど、より適切で迅速な回答が得られます。
トリアン

申し訳ありませんが、現在修正済みです。端末を追加し、ここに貼り付け直しました
。-カネシン

百万回ありがとう!ところで、なぜ " eval"?
IProblemFactory

3

問題を発見しました。

デバッグしながらサーバーを実行する:

$sshd -Dd

auth_keyを読み取れないことがわかりました

$chmod 750 $HOME

それを修正しました。


以前のファイルフラグは何でしたか?
bbaja42

2

次の手順を実行します

ssh-keygen -t rsa -C "your_email@example.com"
# 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

1
$ HOMEで750の権限を確認します
swatisinghi

私のマシン(Fedora 28)では、許可authorized_keysを0600に設定すると問題が解決しますが、.sshディレクトリの許可はlocalhostのスッシングには影響しません
Chang Qian

1

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

パスワードベースの認証を無効にする必要があるかもしれません。これは私が使用する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)


パスワードなしで
ログイン

@Amalgovinus:最初の回答を投稿してから、質問は大幅に編集されました。この答えを削除できると思います。
RedGrittyBrick 14年

0

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

パスワード認証

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

また、おそらくそれを使用することをお勧めします

サービスsshdの再起動

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




0

私は同じ問題を抱えていたので、ログインなしのパスワードを作成するための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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.