기본이 아닌 ID 파일 위치의 비밀번호가없는 SSH


16

시작 스크립트의 일부로 여러 그놈 터미널 창을 자동으로 열어야하며 그 터미널 중 하나가 자동으로 전송됩니다.

ssh user@192.168.1.3

이것의 한계는 SSH 연결을 완료하기 위해 여전히 암호를 입력해야한다는 것입니다.

내가하고 싶은 것은 스크립트가 명령을 시작하고 연결을 완료하는 것입니다. 그 정도로, 나는 여기에 받아 들여진 대답에 요약 된 지침을 따르려고했습니다 .

연결하려는 시스템에서 다음을 실행했습니다.

ssh-keygen
Enter file in which to save the key: /home/user/ssh/keys/server1key

그런 다음 암호를 입력하라는 메시지가 표시되었습니다. 나는 그것이 무엇인지 확신 할 수 없으므로 이것을 비워 두었습니다. 따라서 사용할 때마다 암호 문구로 잠금을 해제해야한다고 가정했습니다.

위의 지침에 따라 계속해서 다음을 수신했습니다.

ssh-copy-id user@IP
ERROR: No identities found

빠른 검색 결과 기본 저장 위치가 아니기 때문에 키 위치를 지정해야한다고 밝혀서 다음과 같이 수정했습니다.

ssh-copy-id -i /home/user/ssh/keys/server1key.pub user@192.168.1.3

서버의 비밀번호를 요청한 후 키를 추가했습니다. 그러나 "ssh user @ IP"로 로그인을 시도 할 때 여전히 비밀번호를 입력하라는 메시지가 표시됩니다.

내가 아는 한, 링크 된 지침을 올바르게 따랐으므로 누락되었거나 기존 구성으로 인해 작동하지 않을 수 있습니까?

두 시스템 모두 18.04와 openssh를 사용합니다.


SSH 명령을 보낼 때 .pub 파일의 위치를 ​​지정해야합니까?
hiigaran

내 파일을 구성하는 약간 다른 방법이 있으므로 기본 위치가 아닌 위치가 있지만 많은 도움이되었습니다. 감사. 내가 받아 들일 수있는 답변을 자유롭게 만드십시오.
hiigaran

답변:


35

처음 실패한 것과 같은 이유로 ssh-copy-id실패합니다. 즉, 아이디 파일에 기본 위치가 아닌 위치를 선택했기 때문입니다.

당신은 추가하여, 같은 방법으로 해결할 수 있습니다 -i /home/user/ssh/keys/server1key당신에게 ssh메모를 클라이언트 측의 위치 필요가 있다고 - 명령 개인 키 파일을.

에서 man ssh

 -i identity_file
         Selects a file from which the identity (private key) for public
         key authentication is read.  The default is ~/.ssh/identity for
         protocol version 1, and ~/.ssh/id_dsa, ~/.ssh/id_ecdsa,
         ~/.ssh/id_ed25519 and ~/.ssh/id_rsa for protocol version 2.

또는, 다음 ~/.ssh/config행을 따라 호스트에 대한 파일 항목 을 만들 수 있습니다

Host            somename
Hostname        192.168.1.3
User            user
IdentityFile    /home/user/ssh/keys/server1key

1
나는 항상 구성 파일에 들여 쓰기가 필요하다고 가정했습니다. 참여.
거미 보리스

~/.ssh/configOpenSSH를 사용하는 모든 사람은을 가지고 있어야합니다 . 그렇지 않으면 OpenSSH는 시스템 전체 기본값을 사용합니다 /etc/ssh/ssh_config. 경우 사람의 발견에 도움이, 내가 업로드 사전 구축 된 ssh_config를 내 GitHub의에를 잠시 읽기 시간이 없을 수도 사용자를위한 시작 지점으로 다시 ssh_config를 메뉴얼 페이지
JW0914

@ JW0914 반값에 불과합니다. in의 개별 값 ~/.ssh/config은 global의 값을 무시 ssh_config하지만 파일 만 있으면 시스템 전체 구성이 비활성화되지 않습니다.
Sebastian Stark

@SebastianStark 아마도 시스템 전체 구성을 비활성화 할 것이라고 언급 한 적이 없으므로 내 의견을 잘못 읽었을 것입니다. 내가 말한 것은 사실 100 % 정확했습니다.
JW0914

2

ssh-copy-id실패한 또 다른 이유 는 키가 SSH 에이전트에 추가되지 않았기 때문입니다 .

먼저, ssh-agent실행 중인지 확인하고 시작하십시오 .

eval "$(ssh-agent -s)"

프로세스 ID를 받으면 키를 추가 할 수 있습니다.

ssh-add -k /home/user/ssh/keys/server1key

함께 -k하면 키 체인에 키를 추가합니다.

다음과 같이 키가 추가되었는지 확인하십시오.

ssh-add -l

ssh-copy-id 지금 작동해야합니다.


-1

이것이 효과가 있기를 바랍니다. "sshpass -p yourpassword"자동으로 원격 호스트에 로그인합니다.

[root @ localhost .ssh] # sshpass -p password123 ssh -l 루트 localhost


-1

두 명령을 실행하십시오.

ssh-keygen
ssh-copy-id

긴 대답 :

user@ip:~$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa): temp_file
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in stemp.
Your public key has been saved in stemp.pub.
The key fingerprint is:
SHA256:5**M user@ip
The key's randomart image is:
+---[RSA 2048]----+
|  ...            |
| ...             |
| ..              |
| ..+.    o .     |
|                 |
|    B            |
|                 |
|=      *         |
|=+   o .         |
+----[SHA256]-----+

그리고:

user@ip:~$ ssh-copy-id -i ~/.ssh/id_rsa.pub ipDestination -p portDest
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.