개인 키를 사용하여 CentOS에 대한 Windows SSH - 작동하지 않음

개인 키를 사용하여 CentOS에 대한 Windows SSH - 작동하지 않음

저는 Windows 10을 사용하고 있습니다. Linux CentOS 서버에 SSH로 연결해야 합니다. Putty와 Windows SSH를 모두 사용해 봅니다(Features..Powershell?에서 켜짐).

PuttyGen을 사용하여 암호 없이 개인 및 공개 RSA 키 쌍( rsa & rsa.pub )을 생성했습니다. 두 파일 모두 내 데스크탑에 있습니다. server333에는 C:\Users\johndoe.ssh\known_hosts에 항목이 있습니다. 내 Windows PC의 .ssh 디렉토리에는 다른 파일이나 디렉토리가 없습니다. 공개 키는 Linux 상자의 /home/johndoe/.ssh/authorized_keys에도 복사됩니다.

시도했지만 ssh -i rsa -vvv server333작동하지 않습니다. 로그는 다음과 같습니다.

c:\Users\johndoe\Desktop>ssh -i rsa -vvv server333
OpenSSH_for_Windows_7.7p1, LibreSSL 2.6.5
debug3: Failed to open file:C:/Users/johndoe/.ssh/config error:2
debug3: Failed to open file:C:/ProgramData/ssh/ssh_config error:2
debug2: resolving "server333" port 22
debug2: ssh_connect_direct: needpriv 0
debug1: Connecting to server333 [1.2.3.4] port 22.
debug1: Connection established.
key_load_public: invalid format
debug1: identity file rsa type -1
debug3: Failed to open file:c:/Users/johndoe/Desktop/rsa-cert error:2
debug3: Failed to open file:c:/Users/johndoe/Desktop/rsa-cert.pub error:2
debug1: key_load_public: No such file or directory
debug1: identity file rsa-cert type -1
debug1: Local version string SSH-2.0-OpenSSH_for_Windows_7.7
debug1: Remote protocol version 2.0, remote software version OpenSSH_7.4
debug1: match: OpenSSH_7.4 pat OpenSSH* compat 0x04000000
debug2: fd 3 setting O_NONBLOCK
debug1: Authenticating to server333:22 as 'corp\\johndoe'
debug3: hostkeys_foreach: reading file "C:\\Users\\johndoe/.ssh/known_hosts"
debug3: record_hostkey: found key type RSA in file C:\\Users\\johndoe/.ssh/known_hosts:1
debug3: load_hostkeys: loaded 1 keys from server333
debug3: Failed to open file:C:/Users/johndoe/.ssh/known_hosts2 error:2
debug3: Failed to open file:C:/ProgramData/ssh/ssh_known_hosts error:2
debug3: Failed to open file:C:/ProgramData/ssh/ssh_known_hosts2 error:2
debug3: order_hostkeyalgs: prefer hostkeyalgs: [email protected],rsa-sha2-512,rsa-sha2-256,ssh-rsa
debug3: send packet: type 20
debug1: SSH2_MSG_KEXINIT sent
debug3: receive packet: type 20
debug1: SSH2_MSG_KEXINIT received
debug2: local client KEXINIT proposal
debug2: KEX algorithms: curve25519-sha256,[email protected],ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha256,diffie-hellman-group14-sha1,ext-info-c
debug2: host key algorithms: [email protected],rsa-sha2-512,rsa-sha2-256,ssh-rsa,[email protected],[email protected],[email protected],[email protected],ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,ssh-ed25519
debug2: ciphers ctos: [email protected],aes128-ctr,aes192-ctr,aes256-ctr,[email protected],[email protected]
debug2: ciphers stoc: [email protected],aes128-ctr,aes192-ctr,aes256-ctr,[email protected],[email protected]
debug2: MACs ctos: [email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],hmac-sha2-256,hmac-sha2-512,hmac-sha1
debug2: MACs stoc: [email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],hmac-sha2-256,hmac-sha2-512,hmac-sha1
debug2: compression ctos: none
debug2: compression stoc: none
debug2: languages ctos:
debug2: languages stoc:
debug2: first_kex_follows 0
debug2: reserved 0
debug2: peer server KEXINIT proposal
debug2: KEX algorithms: [email protected],ecdh-sha2-nistp521,ecdh-sha2-nistp384,ecdh-sha2-nistp256,diffie-hellman-group-exchange-sha256
debug2: host key algorithms: ssh-rsa,rsa-sha2-512,rsa-sha2-256
debug2: ciphers ctos: [email protected],[email protected],[email protected],aes256-ctr,aes192-ctr,aes128-ctr
debug2: ciphers stoc: [email protected],[email protected],[email protected],aes256-ctr,aes192-ctr,aes128-ctr
debug2: MACs ctos: [email protected],[email protected],[email protected],hmac-sha2-512,hmac-sha2-256,[email protected]
debug2: MACs stoc: [email protected],[email protected],[email protected],hmac-sha2-512,hmac-sha2-256,[email protected]
debug2: compression ctos: none,[email protected]
debug2: compression stoc: none,[email protected]
debug2: languages ctos:
debug2: languages stoc:
debug2: first_kex_follows 0
debug2: reserved 0
debug1: kex: algorithm: [email protected]
debug1: kex: host key algorithm: rsa-sha2-512
debug1: kex: server->client cipher: [email protected] MAC: <implicit> compression: none
debug1: kex: client->server cipher: [email protected] MAC: <implicit> compression: none
debug3: send packet: type 30
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug3: receive packet: type 31
debug1: Server host key: ssh-rsa SHA256:abcd
debug3: hostkeys_foreach: reading file "C:\\Users\\johndoe/.ssh/known_hosts"
debug3: record_hostkey: found key type RSA in file C:\\Users\\johndoe/.ssh/known_hosts:1
debug3: load_hostkeys: loaded 1 keys from server333
debug3: Failed to open file:C:/Users/johndoe/.ssh/known_hosts2 error:2
debug3: Failed to open file:C:/ProgramData/ssh/ssh_known_hosts error:2
debug3: Failed to open file:C:/ProgramData/ssh/ssh_known_hosts2 error:2
debug3: hostkeys_foreach: reading file "C:\\Users\\johndoe/.ssh/known_hosts"
debug3: record_hostkey: found key type RSA in file C:\\Users\\johndoe/.ssh/known_hosts:1
debug3: load_hostkeys: loaded 1 keys from 1.2.3.4
debug3: Failed to open file:C:/Users/johndoe/.ssh/known_hosts2 error:2
debug3: Failed to open file:C:/ProgramData/ssh/ssh_known_hosts error:2
debug3: Failed to open file:C:/ProgramData/ssh/ssh_known_hosts2 error:2
debug1: Host 'server333' is known and matches the RSA host key.
debug1: Found key in C:\\Users\\johndoe/.ssh/known_hosts:1
debug3: send packet: type 21
debug2: set_newkeys: mode 1
debug1: rekey after 134217728 blocks
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug3: receive packet: type 21
debug1: SSH2_MSG_NEWKEYS received
debug2: set_newkeys: mode 0
debug1: rekey after 134217728 blocks
debug3: unable to connect to pipe \\\\.\\pipe\\openssh-ssh-agent, error: 2
debug1: pubkey_prepare: ssh_get_authentication_socket: The socket is not connected
debug2: key: rsa (0000000000000000), explicit
debug3: send packet: type 5
debug3: receive packet: type 7
debug1: SSH2_MSG_EXT_INFO received
debug1: kex_input_ext_info: server-sig-algs=<rsa-sha2-256,rsa-sha2-512>
debug3: receive packet: type 6
debug2: service_accept: ssh-userauth
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug3: send packet: type 50
debug3: receive packet: type 53
debug3: input_userauth_banner
NOTICE TO USERS
=============================================================================
This is an official computer system and is the property of
ACME, Inc. It is for authorized users only. Unauthorized users are
prohibited. Users (authorized or unauthorized) have no explicit or
implicit expectation of privacy. Any or all uses of this system may be
subject to one or more of the following actions: interception,
monitoring, recording, auditing, inspection and disclosing to security
personnel and law enforcement personnel, as well as authorized officials
of other agencies, both domestic and foreign. By using this system, the
user consents to these actions. Unauthorized or improper use of this
system may result in administrative disciplinary action and civil and
criminal penalties. By accessing this system you indicate your awareness
of and consent to these terms and conditions of use. Discontinue access
immediately if you do not agree to the conditions stated in this notice.
=============================================================================
debug3: receive packet: type 51
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
debug3: start over, passed a different list publickey,gssapi-keyex,gssapi-with-mic,password
debug3: preferred publickey,keyboard-interactive,password
debug3: authmethod_lookup publickey
debug3: remaining preferred: keyboard-interactive,password
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Trying private key: rsa
debug3: sign_and_send_pubkey: RSA SHA256:zyxw
debug3: send packet: type 50
debug2: we sent a publickey packet, wait for reply
debug3: receive packet: type 51
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
debug2: we did not send a packet, disable method
debug3: authmethod_lookup password
debug3: remaining preferred: ,password
debug3: authmethod_is_enabled password
debug1: Next authentication method: password
debug3: failed to open file:c:/dev/tty error:3
debug1: read_passphrase: can't open /dev/tty: No such file or directory
corp\johndoe@server333's password:

답변1

SSH 호스트 서버에 사용자 이름을 정의하지 않은 것 같습니다.

user여전히 이 작업을 수행할 수 있지만 다음과 같이 SSH 구성 파일을 정의해야 합니다 .

vi ~/.ssh/config
...

Host server333
HostName your-server333-ip
User your-user
IdentityFile your-private-key

그런 다음 다음을 사용하여 서버를 원격으로 연결할 수 있습니다.

ssh server333

600참고: 구성 파일에 권한이 있는지 확인하세요.

답변2

당신이 명령말했다당신이 실행한 명령은 당신이 실행한 명령과 다릅니다실제로달렸다.

당신이 한 말은 다음과 같습니다.

ssh -i johndoe_privatekey -vvv server333

실제로 수행한 작업:

ssh -i johndoe_privatekey.pub -vvv server333

여기서는 ssh가 지정한 키 파일을 찾을 수 없다고 불평하는 것을 볼 수 있습니다.

debug3: Failed to open file:C:/Users/johndoe/Desktop/johndoe_privatekey.pub.pub error:2
debug1: key_load_public: No such file or directory

.pub명령에서 접미사를 삭제하고 키 파일이 실제로 존재하는지 확인한 후 다시 시도하십시오.

답변3

key_load_public: 잘못된 형식

Putty와 PowerShell은 서로 다른 키 형식을 생성/사용합니다. SSH를 사용하면 모든 별이 정렬되어야 하며 PowerShell과 Putty 간의 불일치로 인해 올바른 키 형식을 사용하지 않을 수 있습니다. Putty에서 키를 생성하고 해당 공개 키를 서버에 업로드한 경우 다른 키 형식이 필요하므로 PowerShell을 통해 로그인할 수 없습니다.

키를 다시 생성하고 처음부터 다시 시작해 보겠습니다. 이번에는 일관되게 유지하십시오. PowerShell을 사용하여 RSA 키를 생성한 경우 해당 RSA 공개 키(PowerShell에서도 생성됨)를 서버에 업로드하고 있는지 확인하세요.

PowerShell과 Putty 모두에 대해 별도의 키 쌍을 생성하는 것이 더 쉬울 수 있습니다. 그런 다음 두 공개 키(Putty용 하나, PowerShell용 하나)를 서버의 Authorized_keys 파일에 업로드해야 합니다.

https://www.ssh.com/ssh/keygen/#choosing-an-algorithm-and-key-size

https://www.rfc-editor.org/rfc/rfc4716#:~:text=In%20order%20to%20implement%20public,bytes%20제외%20line%20termination%20characters.

https://www.digitalocean.com/community/tutorials/understanding-the-ssh-encryption-and-connection-process

답변4

마침내 알아냈습니다. 여기에는 두 가지 문제가 있습니다.

  1. 사용자 이름을 지정하지 않으면 Windows SSH의 기본값은 DOMAIN\johndoe(분명히 Windows 사용자 이름임)로 설정되는 반면, Linux 서버에서는 johndoe만 예상합니다. ssh johndoe@server333대신 이 호출을 수정 ssh server333한 다음 사용자 이름을 입력하려고 합니다.

  2. 또한 파일 이름에 제한적인 권한이 있어야 합니다(소유자인 본인만 권한을 갖고 있어야 하며 다른 사람은 가져서는 안 됩니다). 이 문제를 해결하려면 파일의 보안 권한에서 다른 모든 사용자를 제거하세요.

두 가지를 모두 수행한 후에는 매력처럼 작동했습니다. 로컬 home/.ssh 폴더에 공개 키를 넣을 필요는 없습니다. 개인 키의 이름을 id_rsa(확장자 없음)로 지정하고 home/.ssh 폴더에 넣은 다음 다음을 사용하여 서버에 연결할 수 있습니다.ssh johndoe@server333

관련 정보