011SSH 비밀번호 없이 로그인
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-agent bash
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.