암호가없는 SSH가 Mountain Lion에서 작동하지 않음


1

우리는 소규모 사무실에서 Backuppc를 사용하고 있으며 Windows 7 PC와 일부 사용자는 Macbook을 사용하고 있습니다. Backuppc는 Ubuntu 12.04.2를 실행하는 서버에 있습니다. 비밀번호없는 ssh는 Snow Leopard 및 Lion에서 잘 작동하지만, 계속해서 비밀번호를 요구하면서 Mountain Lion과 씨름하고 있습니다. rsa 공개 키 교환 절차를 따르고 Backuppc 사용자의 공개 키를 Mountain Lion 호스트 시스템에 추가했습니다. 먼저 키를 .ssh 디렉토리의 'authorized_keys2'파일에 추가했습니다. 그것은 작동하지 않았다. Mountain Lion이 sshd 패키지를 업그레이드 한 것으로 보이는 것처럼 일부 검색을 수행 한 후 일부 사람들은 'authorized_keys'를 사용하도록 제안했습니다. 그것은 작동하지 않았다. .ssh 디렉토리 (700)와 'authorized_keys'에 대한 권한이 올바르게 설정되어 있다고 생각합니다. 파일 (편집 : 644). Backuppc 사용자에서 Mountain Lion이있는 머신으로 ssh하려고 할 때마다 비밀번호를 계속 묻습니다. 정말 짜증나. 아래에서는 누구나 힌트를 제공 할 수있는 경우를 대비하여 디버그 출력을 첨부합니다. 당신의 도움을 주셔서 대단히 감사합니다.

backuppc@ubuntu:~$ ssh -v user1@192.168.10.55
OpenSSH_5.9p1 Debian-5ubuntu1, OpenSSL 1.0.1 14 Mar 2012
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to 192.168.10.55 [192.168.10.55] port 22.
debug1: Connection established.
debug1: identity file /var/lib/backuppc/.ssh/id_rsa type 1
debug1: Checking blacklist file /usr/share/ssh/blacklist.RSA-2048
debug1: Checking blacklist file /etc/ssh/blacklist.RSA-2048
debug1: identity file /var/lib/backuppc/.ssh/id_rsa-cert type -1
debug1: identity file /var/lib/backuppc/.ssh/id_dsa type -1
debug1: identity file /var/lib/backuppc/.ssh/id_dsa-cert type -1
debug1: identity file /var/lib/backuppc/.ssh/id_ecdsa type -1
debug1: identity file /var/lib/backuppc/.ssh/id_ecdsa-cert type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.9
debug1: match: OpenSSH_5.9 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_5.9p1 Debian-5ubuntu1
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Server host key: RSA 4c:c3:21:8f:6e:59:60:a9:5f:94:75:01:2d:e2:03:3e
debug1: Host '192.168.10.55' is known and matches the RSA host key.
debug1: Found key in /var/lib/backuppc/.ssh/known_hosts:2
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,keyboard-interactive
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /var/lib/backuppc/.ssh/id_rsa
debug1: Authentications that can continue: publickey,keyboard-interactive
debug1: Trying private key: /var/lib/backuppc/.ssh/id_dsa
debug1: Trying private key: /var/lib/backuppc/.ssh/id_ecdsa
debug1: Next authentication method: keyboard-interactive
Password:

의견에 대한 조언에 따라 Mountain Lion 대상 시스템에서 'sshd -d'를 실행했습니다. 먼저 'ssh'를 중지 한 다음 'sshd -d'를 실행하십시오. 아래에 결과를 붙여 넣습니다.

$sudo launchctl unload  /System/Library/LaunchDaemons/ssh.plist
$sudo /usr/sbin/sshd -d

debug1: sshd version OpenSSH_5.9p1
debug1: read PEM private key done: type RSA
debug1: private host key: #0 type 1 RSA
debug1: read PEM private key done: type DSA
debug1: private host key: #1 type 2 DSA
debug1: rexec_argv[0]='/usr/sbin/sshd'
debug1: rexec_argv[1]='-d'
debug1: Bind to port 22 on 0.0.0.0.
Server listening on 0.0.0.0 port 22.
debug1: Bind to port 22 on ::.
Server listening on :: port 22.
debug1: fd 6 clearing O_NONBLOCK
debug1: Server will not fork when running in debugging mode.
debug1: rexec start in 6 out 6 newsock 6 pipe -1 sock 9
debug1: inetd sockets after dupping: 5, 5
Connection from 192.168.10.100 port 34179
debug1: Client protocol version 2.0; client software version OpenSSH_5.9p1 Debian-5ubuntu1
debug1: match: OpenSSH_5.9p1 Debian-5ubuntu1 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_5.9
debug1: permanently_set_uid: 75/75 [preauth]
debug1: list_hostkey_types: ssh-rsa,ssh-dss [preauth]
debug1: SSH2_MSG_KEXINIT sent [preauth]
debug1: SSH2_MSG_KEXINIT received [preauth]
debug1: kex: client->server aes128-ctr hmac-md5 none [preauth]
debug1: kex: server->client aes128-ctr hmac-md5 none [preauth]
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST received [preauth]
debug1: SSH2_MSG_KEX_DH_GEX_GROUP sent [preauth]
debug1: expecting SSH2_MSG_KEX_DH_GEX_INIT [preauth]
debug1: SSH2_MSG_KEX_DH_GEX_REPLY sent [preauth]
debug1: SSH2_MSG_NEWKEYS sent [preauth]
debug1: expecting SSH2_MSG_NEWKEYS [preauth]
debug1: SSH2_MSG_NEWKEYS received [preauth]
debug1: KEX done [preauth]
debug1: userauth-request for user user1 service ssh-connection method none [preauth]
debug1: attempt 0 failures 0 [preauth]
debug1: PAM: initializing for "user1"
debug1: PAM: setting PAM_RHOST to "ubuntu"
debug1: userauth-request for user user1 service ssh-connection method publickey [preauth]
debug1: attempt 1 failures 0 [preauth]
debug1: test whether pkalg/pkblob are acceptable [preauth]
debug1: temporarily_use_uid: 502/20 (e=0/0)
debug1: trying public key file /Users/user1/.ssh/authorized_keys
debug1: fd 6 clearing O_NONBLOCK
Authentication refused: bad ownership or modes for directory /Users/user1
debug1: restore_uid: 0/0
debug1: temporarily_use_uid: 502/20 (e=0/0)
debug1: trying public key file /Users/user1/.ssh/authorized_keys2
debug1: fd 6 clearing O_NONBLOCK
Authentication refused: bad ownership or modes for directory /Users/user1
debug1: restore_uid: 0/0
Failed publickey for user1 from 192.168.10.100 port 34179 ssh2
debug1: audit_event: unhandled event 6
debug1: userauth-request for user user1 service ssh-connection method keyboard-interactive [preauth]
debug1: attempt 2 failures 1 [preauth]
debug1: keyboard-interactive devs  [preauth]
debug1: auth2_challenge: user=user1 devs= [preauth]
debug1: kbdint_alloc: devices 'pam' [preauth]
debug1: auth2_challenge_start: trying authentication method 'pam' [preauth]
Postponed keyboard-interactive for user1 from 192.168.10.100 port 34179 ssh2 [preauth]
debug1: do_pam_account: called
debug1: PAM: num PAM env strings 2
Postponed keyboard-interactive/pam for user1 from 192.168.10.100 port 34179 ssh2 [preauth]
debug1: do_pam_account: called
Accepted keyboard-interactive/pam for user1 from 192.168.10.100 port 34179 ssh2
debug1: monitor_read_log: child log fd closed
debug1: monitor_child_preauth: user1 has been authenticated by privileged process
debug1: PAM: establishing credentials
User child is on pid 3240
debug1: PAM: establishing credentials
debug1: permanently_set_uid: 502/20
debug1: Entering interactive session for SSH2.
debug1: server_init_dispatch_20
debug1: server_input_channel_open: ctype session rchan 0 win 1048576 max 16384
debug1: input_session_request
debug1: channel 0: new [server-session]
debug1: session_new: session 0
debug1: session_open: channel 0
debug1: session_open: session 0: link with channel 0
debug1: server_input_channel_open: confirm session
debug1: server_input_global_request: rtype no-more-sessions@openssh.com want_reply 0
debug1: server_input_channel_req: channel 0 request pty-req reply 1
debug1: session_by_channel: session 0 channel 0
debug1: session_input_channel_req: session 0 req pty-req
debug1: Allocating pty.
debug1: session_new: session 0
debug1: session_pty_req: session 0 alloc /dev/ttys001
debug1: Ignoring unsupported tty mode opcode 37 (0x25)
debug1: Ignoring unsupported tty mode opcode 52 (0x34)
debug1: Ignoring unsupported tty mode opcode 71 (0x47)
debug1: server_input_channel_req: channel 0 request env reply 0
debug1: session_by_channel: session 0 channel 0
debug1: session_input_channel_req: session 0 req env
debug1: server_input_channel_req: channel 0 request shell reply 1
debug1: session_by_channel: session 0 channel 0
debug1: session_input_channel_req: session 0 req shell
debug1: Setting controlling tty using TIOCSCTTY.

Mountain Lion 컴퓨터에서 어떤 오류가 발생합니까?
NickW

예, -dMountain Lionbaby 에서 sshd를 실행하여 진행 상황을 확인하십시오.
ott-- 2018 년

안녕하세요, 귀하의 의견에 감사드립니다. 나는 당신이 말한대로 먼저 ssh 사용을 중지 sudo launchctl unload /System/Library/LaunchDaemons/ssh.plist한 다음 실행 sudo /usr/sbin/sshd -d합니다. 원래 질문 끝에 결과를 붙여 넣습니다.
ibagur 2016 년

backuppc에서 연결을 시도하면 Mountain Lion 머신에 더 많은 로그 메시지가 있습니다. 그것들이 더 중요한 것입니다.
Kent

죄송합니다. 전부 게시하지 않았습니다. 지금 편집했습니다.
ibagur 2018 년

답변:


3

이바구 르의 대답은 가까웠지만 열쇠를 뒤집 었습니다. 원격 시스템의 공개 키는 해당 지역에 있어야합니다 ~/.ssh/known_hosts파일. 귀하의 공개 키는 원격 시스템에 있어야합니다 ~/.ssh/**authorized_keys파일. 위의 게시물과 달리 authorized_keys파일 에는 600 개의 권한이 있어야 합니다. 수행 단계는

  1. ~/.ssh사용 scp id_rsa.pub username@remotehost:/path/to/home/username/.ssh/mykey.tmp하는 파일 이름이 원격 시스템에서 고유한지 확인하는 명령 을 사용 하여 공개 키를 원격 시스템의 디렉토리에 복사하십시오 . 프롬프트가 표시되면 원격 시스템의 키가 원격 시스템에 올바른 키인지 확인한 후 원격 시스템의 키를 승인하십시오 (키 신뢰). 원격 시스템의 공개 키가 ~/.ssh/known_hosts파일에 추가 됩니다.
  2. 비밀번호 인증을 사용하여 원격 시스템에 로그인하십시오.
  3. ~/.ssh사용으로 디렉토리 변경cd .ssh
  4. ``~ / .ssh / authorized_keys file usingcat mykey.tmp >> certified_keys``에 키를 설치하십시오
  5. authorized_keys파일을 사용하여 모드 600 인지 확인하십시오chmod 600 authorized_keys
  6. 로그 아웃하고 테스트하면 더 이상 암호를 입력하라는 메시지가 표시되지 않습니다.

여전히 문제 ssh -vv가있는 경우 디버깅 출력을 얻기 위해 사용하여 원격 시스템에 로그인을 시도 할 수 있지만 내 경험상 클라이언트는 매우 유용한 정보를 제공하지 않습니다. 원래 질문에 설명 된대로 원격 시스템의 SSH 데몬을 디버그 모드에서 실행해야합니다.


2

댓글에 대한 팁과 제안을 해주신 모든 분들께 감사드립니다. 나는 마침내 그것을 작동시켰다. Mountain Lion 사용자 디렉토리 (.ssh 및 certified_keys 디렉토리가 아님)에 대한 권한에 문제가있었습니다. 그래서 누군가 비슷한 문제에 직면했을 때 취한 단계를 아래에 요약합니다.

  1. Mountain Lion 대상 시스템 (server / backuppc 사용자의 ssh에 연결중인 시스템)에 대한 권한을 복구하십시오.
  2. Mountain Lion 사용자 디렉토리에 755 권한이 있는지 확인하십시오.
  3. .ssh이전에 작성한 경우 디렉토리 및 컨텐츠를 삭제하십시오 .
  4. .ssh700 개의 퍼미션이 있는 디렉토리와를 사용하여 Mountain Lion 사용자를위한 새로운 rsa 키 세트를 다시 만듭니다 ssh-keygen.
  5. Mountain Lion 사용자 공개 키를 서버 known_hosts파일에 추가하십시오.
  6. authorized_keys파일 에 서버 공개 키를 추가 합니다 (Mountain Lion에서는 'authorized_keys2'를 사용하지 말고 사용자 허가를 644로 설정하십시오).

내 사용자 디렉토리 권한이 771로 설정되었습니다. 테일링 /var/log/secure.log에 "인증 거부 됨 : 소유권이 잘못되었거나 디렉토리 / Users / myuser에 대한 모드"가 표시되었습니다. 그것을 755로 변경
shadfc

1

authorized_keys파일에 사용 권한이 644로 설정되어 있어야 한다고 생각합니다 .

권한이 다른 경우 파일의 존재는 완전히 무시되고 다음 인증 방법 (이 경우 암호)에 충돌합니다.


광산은 640, 700, 심지어 600에서 잘 작동합니다.
NickW

600을 권장합니다

안녕, 고마워 644, 640, 700을 시도했지만 여전히 암호를 묻습니다.
ibagur
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.