011SSH 비밀번호 없이 로그인

4677 단어

1. 단방향 암호 접근 없음


단방향 암호 없이 원격 서버에 접근하는 작업은 비교적 간단하다. 예를 들어 서버 A는 암호 없이 서버 B(A – >B)에 접근해야 한다. 그러면 서버 A에서 키 쌍을 생성하고 생성된 공공 키를 서버 B의 관련 사용자 디렉터리에 업로드하기만 하면 된다.ssh 디렉터리 (없으면 수동으로 만들 수 있습니다. 디렉터리 권한은 700) 이며, 공개 키 파일 이름을authorized_keys (참고, 이 파일의 권한은 644여야 합니다.) authorized_keys 파일, id_rsa.pub의 내용을 authorized_에 추가keys 파일에서주의하세요.ssh 디렉토리 및 authorized_keys 파일의 권한, 권한이 일치하지 않으면 설정이 잘못됩니다.구체적인 작업은 다음과 같다.
1. 암호 없이 원격 서버에 로그인해야 하는 기계에서 (이 예는 서버 A) 암호 쌍을 생성합니다. 생성하는 과정에서 몇 가지 옵션이 있습니다. 키 쌍의 저장 디렉터리를 입력하고 개인 키를 입력하면 됩니다.
[root@mysqlcluster ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory ‘/root/.ssh’.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
0e:4c:ec:e3:04:98:b0:71:00:91:75:57:ee:56:a1:82 root@mysqlcluster

위 단계를 수행하면 ~/.ssh 디렉터리에서 두 개의 파일 생성 id_rsa 및 id_rsa.pub, 그중 id_rsa는 개인 키로 본 컴퓨터에 저장됩니다.id_rsa.pub는 공개 키입니다. 원격 서버에 업로드할 것입니다.
2. 암호 없이 로그인해야 하는 원격 서버 B에 공개 키를 업로드하고 authorized_keys: 원격 서버 B에 없는 경우.ssh 디렉터리는 수동으로 만듭니다.
[root@www1bak ~]# mkdir .ssh
[root@www1bak ~]# chmod 755 .ssh

그리고 서버 A에서 공개 키 파일을 원격 서버 B로 업로드합니다.
[root@mysqlcluster ~]# scp .ssh/id_rsa.pub [email protected]:/root/.ssh/authorized_keys
The authenticity of host ’192.168.15.234 (192.168.15.234)’ can’t be established.
RSA key fingerprint is c9:ef:0c:1b:ac:6c:ef:84:a4:a7:e5:d1:20:58:c8:73.
Are you sure you want to continue connecting (yes/no)? yes                              
Warning: Permanently added ’192.168.15.234′ (RSA) to the list of known hosts.    // B ( A) known_hosts 
[email protected]′s password:
id_rsa.pub                                                                                        100%  399     0.4KB/s   00:00

3. 테스트를 통해 공개 키 파일을 원격으로 업로드한 후 바로 서버 A에서 서버 B에 로그인합니다. 비밀번호를 입력하지 않고 서버 B에 로그인하면 성공합니다. 비밀번호를 입력하려면 원격 서버 B에 있는 것을 확인하십시오.ssh 디렉터리 권한이 700인지, 업로드된 원격 서버의 키 이름이 authorized_로 바뀌었는지keys, 권한이 644인지 여부

2. 여러 서버에 암호 액세스 없음


여러 서버가 서로 암호 없이 접근하는 것은 두 서버가 일방적으로 암호 없이 접근하는 원리와 같다. 단지 여러 서버 간에 암호 없이 접근하기 때문에 두 서버가 암호 없이 로그인하는 것처럼 직접 업로드할 수 없다. 절차는 다음과 같다.
1. 모든 서버에서 ssh-keygen-trsa 생성 키 쌍을 실행합니다.
#ssh-keygen -t rsa

2. 각 서버에서 키 쌍을 생성한 후 공개 키를 암호 없이 로그인해야 하는 서버에 복사한다. 예를 들어 192.168.15.240192.168.15.24192.168.15.242 이 세 서버는 서로 암호 없이 로그인해야 한다. 각 서버에서 키 쌍을 생성한 후 각 서버에서 ssh-copy-id 명령을 실행한다(구체적인 설명 및 용법은 마지막 부록 참조).공개 키를 다른 두 서버에 복사합니다 (이곳은 192.168.15.240의 경우 사용자는 루트이고 다른 두 단계는 같습니다)
#ssh-copy-id -i  ~/.ssh/id_rsa.pub [email protected]
#ssh-copy-id -i  ~/.ssh/id_rsa.pub [email protected]

위 명령은 authorized_에 자동으로 공개 키를 추가할 수 있습니다keys의 파일에서 모든 서버가 상기 절차를 수행한 후에 여러 서버가 서로 암호 없이 ssh-copy-id 소개와 사용법을 첨부할 수 있습니다. Linux 시스템에는 ssh-copy-id라는 도구가 부족합니다.
# type ssh-copy-id
ssh-copy-id is /usr/bin/ssh-copy-id

캣이나more 명령으로 보시면 ssh-copy-id 자체가 셸 스크립트라는 것을 알 수 있습니다. 사용법은 간단합니다.
# ssh-copy-id -i ~/.ssh/id_rsa.pub user@server

더 이상 맞춤법 쓰기 안 해도 돼요. authorized_ssh-copy-id는 매우 치명적인 문제가 있습니다. 그것은 단지 SSH가 22 포트에서 실행되는 상황만 지원하는 것을 절약하는 것입니다. 그러나 실제적으로 안전한 수요로 인해 우리는 종종 서버의 SSH 포트를 변경합니다. 예를 들어 10022 포트로 변경합니다. 이때 ssh-copy-id를 실행하면 오류가 발생합니다. ssh-copy-id 스크립트를 직접 수정하면 당연히 이 문제를 수정할 수 있습니다.하지만 그건 너무 딱딱해 보여서 실제로는 더 좋은 방법이 있다.
# vi ~/.ssh/config

추가 내용:
Host server
Hostname ip
Port 10022

포트만 단독으로 추가할 수 있습니다. 그러면 전역 설정입니다. 저장한 후에 ssh-copy-id 명령을 실행하면 오류가 발생하지 않습니다.덧붙임: 네티즌은 포트가 22가 아니라면 config 파일을 수정하지 않고 다음과 같이 할 수 있다고 제시했다.
ssh-copy-id -i ~/.ssh/id_rsa.pub “-p 10022 user@server

발생할 수 있는 문제:


1. ssh 로그인 시 "Agent admitted failure to sign using the key"가 나타납니다. 실행: $ssh-add 개인 키를 강제로 추가합니다.
2. 아무런 오류 알림이 없으면 비밀번호를 입력하고 로그인할 수 있지만 비밀번호가 없으면 로그인할 수 없습니다. 연결된 호스트(예를 들어 A가 B에 ssh 연결을 시작하면 B에서)에서 다음 단계를 수행합니다. $chmod o-w ~/$chmod 700 ~/.ssh $chmod 600 ~/.ssh/authorized_keys
3. 2단계를 실행해도 비밀번호 없이 로그인할 수 없다면 다음 $ps-Af | grep agent 몇 개를 시도해 보세요
     ssh , ,kill , , ssh , , :
   $ssh-agent

아니면 안 되면 다음을 실행하고 ssh 서비스를 다시 시작합니다
   $sudo service sshd restart
  • ssh-add를 실행할 때 인증 에이전트에 연결을 열 수 없음을 알렸지만 실패했습니다

  • 실행:ssh-agent bash
  • 최근에 xshell로 생성된 키를 사용하는 친구가 있습니다. 로그인 서버 xshell로 생성된 키 뒤에 리턴 문자가 없기 때문에 여러 개의 키를 사용하여 authorized_키를 눌렀을 때 중간에 리턴 문자(0x0D)를 넣는 것을 기억하세요.​
  • 좋은 웹페이지 즐겨찾기