암호없이 로컬 호스트에 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:~$ 

마지막 명령에서 볼 수 있듯이 여전히 암호를 묻습니다. 어떻게 해결할 수 있습니까 ?? 우분투 -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 yesPubkeyAuthentication yes당신의 / etc / ssh / sshd_config에서? ssh -vv localhost는 무엇을 보여줍니까? 방금 10.04 상자에서 이것을 시도했지만 아무런 문제가 없었습니다.
Doon

Hy Doon, 사실 .. 둘 다 그렇습니다. 질문에 ssh -vv의 출력을 추가했습니다.
Canesin

이미 액세스 권한이있는 경우 왜 localhost로 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를-추가 ... 그것은 암호를 묻습니다, $ ssh를 로컬 호스트 LS, 일, 다시 (내가 창조 전혀 사용하지 않기 때문에) 암호를 물어 ..하지만하지 않았다
Canesin

따라서을 실행 한 경우 ssh-add질문을 편집하고 수행 한 모든 작업을 수행하십시오. 더 많은 정보를 줄수록 답이 더 좋고 빠릅니다.
Torian

죄송합니다. 지금 수정했습니다. 터미널을 추가하고 다시 붙여 넣기 위해 다시
시도했습니다

백만 번 감사합니다! BTW, 왜 " 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 개의 권한이
부여됨

내 컴퓨터 (Fedora 28)에서 권한 authorized_keys을 0600으로 설정 하면 문제가 해결되지만 .ssh디렉토리의 권한은 localhost를 sshing하는 데 영향을 미치지 않습니다.
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

@Amalgovinus : 초기 답변을 게시 한 이후 질문이 광범위하게 편집되었습니다. 이 답변을 삭제할 수 있다고 가정합니다.
RedGrittyBrick 2018 년

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.