설명하다

설명하다

설명하다

sshMS-Windows PC와 Raspberry Pi를 연결했습니다 . 이를 위해 다음 단계를 따릅니다.

1단계: Raspberry Pi의 IP 주소를 어떻게든 얻습니다. 다음과 같아야 합니다: 192.168.1.52

2단계: 셸을 열고 SSH를 통해 Raspberry Pi에 액세스합니다.

ssh [email protected]

비밀번호가 필요합니다.

3단계: 원격 컴퓨터의 홈 디렉터리에서 다음 명령을 사용합니다.

mkdir .ssh

4단계: 개인/공개 키를 통해 SSH 연결을 보호합니다. 로컬 컴퓨터에서 다음 명령을 사용하십시오.

ssh-keygen -f .ssh/fede_windows -t rsa -b 4096

로컬 컴퓨터가 Linux 기반인 경우 다음 줄을 실행합니다.

chmod 600 .ssh/fede_windows # if linux

마침내:

scp .ssh/fede_windows.pub [email protected]:.ssh

5단계: 원격 컴퓨터에서 다음 명령을 사용합니다.

sudo nano /etc/ssh/sshd_config

그리고 구성 파일의 다음 줄을 수정합니다.

ChallengeResponseAuthentication no
PasswordAuthentication no
UsePAM no

마침내:

sudo systemctl reload sshd

6단계: 원격 컴퓨터에서 다음 명령을 사용합니다.

cat ~/.ssh/fede_windows.pub >> ~/.ssh/authorized_keys
chmod 700 ~/.ssh/
chmod 600 ~/.ssh/*

7단계: 로컬 컴퓨터에서 다음 명령을 실행하여 원격 컴퓨터에 로그인합니다.

ssh -i .ssh/fede_windows [email protected]

질문: Fede_ubuntu라는 키를 생성하여 Ubuntu PC에서 이 모든 단계를 다시 수행하면 명령에 무엇을 삽입하더라도 Raspberry Pi에 SSH로 연결할 수 있는 것처럼 보입니다.

ssh -i .ssh/fede_xyz [email protected]

이는 항상 작동하며 방금 생성한 키로 제한되어야 하므로 이런 일이 발생해서는 안 됩니다. Windows 시스템으로 전환하면 올바른 키를 지정한 경우에만 모든 것이 예상대로 작동합니다.

질문: 이 문제의 가능한 원인과 해결 방법을 제안해 주실 수 있나요?

편집하다: 다음 명령을 입력하면 다음을 얻습니다.ssh -i .ssh/key_that_does_not_exits -v [email protected]

Warning: Identity file .ssh/key_that_does_not_exits not accessible: No such file or directory.
OpenSSH_8.2p1 Ubuntu-4ubuntu0.3, OpenSSL 1.1.1f  31 Mar 2020
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: include /etc/ssh/ssh_config.d/*.conf matched no files
debug1: /etc/ssh/ssh_config line 21: Applying options for *
debug1: Connecting to 192.168.1.52 [192.168.1.52] port 22.
debug1: Connection established.
debug1: identity file /home/federico/.ssh/id_rsa type -1
debug1: identity file /home/federico/.ssh/id_rsa-cert type -1
debug1: identity file /home/federico/.ssh/id_dsa type -1
debug1: identity file /home/federico/.ssh/id_dsa-cert type -1
debug1: identity file /home/federico/.ssh/id_ecdsa type -1
debug1: identity file /home/federico/.ssh/id_ecdsa-cert type -1
debug1: identity file /home/federico/.ssh/id_ecdsa_sk type -1
debug1: identity file /home/federico/.ssh/id_ecdsa_sk-cert type -1
debug1: identity file /home/federico/.ssh/id_ed25519 type -1
debug1: identity file /home/federico/.ssh/id_ed25519-cert type -1
debug1: identity file /home/federico/.ssh/id_ed25519_sk type -1
debug1: identity file /home/federico/.ssh/id_ed25519_sk-cert type -1
debug1: identity file /home/federico/.ssh/id_xmss type -1
debug1: identity file /home/federico/.ssh/id_xmss-cert type -1
debug1: Local version string SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.3
debug1: Remote protocol version 2.0, remote software version OpenSSH_7.9p1 Raspbian-10+deb10u2+rpt1
debug1: match: OpenSSH_7.9p1 Raspbian-10+deb10u2+rpt1 pat OpenSSH* compat 0x04000000
debug1: Authenticating to 192.168.1.52:22 as 'pi'
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: algorithm: curve25519-sha256
debug1: kex: host key algorithm: ecdsa-sha2-nistp256
debug1: kex: server->client cipher: [email protected] MAC: <implicit> compression: none
debug1: kex: client->server cipher: [email protected] MAC: <implicit> compression: none
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server host key: ecdsa-sha2-nistp256 SHA256:hC5w2kDxgHH5eFRY1vOJaS7ipPR+8OWX2tkkEZbF194
debug1: Host '192.168.1.52' is known and matches the ECDSA host key.
debug1: Found key in /home/federico/.ssh/known_hosts:1
debug1: rekey out after 134217728 blocks
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: rekey in after 134217728 blocks
debug1: Will attempt key: federico@federico RSA SHA256:E96Hu2Ee+IyAuoZ06GxTvo+ZmAkzqfihbAKkFqxU1AU agent
debug1: Will attempt key: /home/federico/.ssh/id_rsa 
debug1: Will attempt key: /home/federico/.ssh/id_dsa 
debug1: Will attempt key: /home/federico/.ssh/id_ecdsa 
debug1: Will attempt key: /home/federico/.ssh/id_ecdsa_sk 
debug1: Will attempt key: /home/federico/.ssh/id_ed25519 
debug1: Will attempt key: /home/federico/.ssh/id_ed25519_sk 
debug1: Will attempt key: /home/federico/.ssh/id_xmss 
debug1: SSH2_MSG_EXT_INFO received
debug1: kex_input_ext_info: server-sig-algs=<ssh-ed25519,ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521>
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,keyboard-interactive
debug1: Next authentication method: publickey
debug1: Offering public key: federico@federico RSA SHA256:E96Hu2Ee+IyAuoZ06GxTvo+ZmAkzqfihbAKkFqxU1AU agent
debug1: Server accepts key: federico@federico RSA SHA256:E96Hu2Ee+IyAuoZ06GxTvo+ZmAkzqfihbAKkFqxU1AU agent
debug1: Authentication succeeded (publickey).
Authenticated to 192.168.1.52 ([192.168.1.52]:22).
debug1: channel 0: new [client-session]
debug1: Requesting [email protected]
debug1: Entering interactive session.
debug1: pledge: network
debug1: client_input_global_request: rtype [email protected] want_reply 0
debug1: Remote: /home/pi/.ssh/authorized_keys:2: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding
debug1: Remote: /home/pi/.ssh/authorized_keys:2: key options: agent-forwarding port-forwarding pty user-rc x11-forwarding
debug1: Sending environment.
debug1: Sending env LC_ADDRESS = it_IT.UTF-8
debug1: Sending env LC_NAME = it_IT.UTF-8
debug1: Sending env LC_MONETARY = it_IT.UTF-8
debug1: Sending env LC_PAPER = it_IT.UTF-8
debug1: Sending env LANG = en_US.UTF-8
debug1: Sending env LC_IDENTIFICATION = it_IT.UTF-8
debug1: Sending env LC_TELEPHONE = it_IT.UTF-8
debug1: Sending env LC_MEASUREMENT = it_IT.UTF-8
debug1: Sending env LC_TIME = it_IT.UTF-8
debug1: Sending env LC_NUMERIC = it_IT.UTF-8
Last login: Sun Aug 22 22:26:00 2021 from 192.168.1.197

답변1

로그에서:

debug1: Next authentication method: publickey
debug1: Offering public key: federico@federico RSA SHA256:E96Hu2Ee+IyAuoZ06GxTvo+ZmAkzqfihbAKkFqxU1AU agent
debug1: Server accepts key: federico@federico RSA SHA256:E96Hu2Ee+IyAuoZ06GxTvo+ZmAkzqfihbAKkFqxU1AU agent
debug1: Authentication succeeded (publickey).

이는 SSH 에이전트의 키가 사용되고 있음을 의미합니다. 최근에 사용한 유효한 키이고 에이전트에 수동으로 추가했거나 파일에서 사용하기 위해 추가했다고 가정합니다 AddKeysToAgent yes.~/.ssh/config

SSH 에이전트에서 모든 ID를 제거하고 다시 시도하십시오 ssh-add -D. 또는 IdentityAgent noneSSH 구성에 추가하거나 ssh -o IndentityAgent=none호출 시 사용하세요 ssh.

IdentitiesOnly yesSSH 구성에서 이를 사용하면 SSH 서버에 제공되는 ID를 더 효과적으로 제어할 수 있어 이점을 얻을 수도 있습니다 . 이 옵션에 대한 설명서를 참조하십시오 ssh_config(5).

답변2

ssh는 -i 옵션으로 제안한 키를 찾을 수 없으므로 사용 가능한 다른 키를 시도합니다. .ssh 디렉터리에 유효한 키가 있으며, 이는 허용되고 연결이 설정됩니다. 키를 사용하지 않으려면 키를 삭제하거나 비밀번호로 보호하여 연결을 허용하는 비밀번호를 입력해야 합니다.

"잘못된 키"로 연결하지 않았습니다. 사용 중인 키는 .ssh 디렉터리에 있으며 연결에 유효합니다.

관련 정보