원격 서버가 있습니다. 비밀번호를 입력하지 않고 공개키를 이용해 SSH로 접속하려고 하는데, 원격 시스템이 공개키 인증을 거부합니다.
그렇다면 가장 좋은 접근 방식은 무엇입니까? 사용해 보는 것은 어떨까요 sshpass
?
답변1
편집하다
내가 참조로 사용한 링크에서 더 많은 옵션을 찾을 수 있습니다.
설치한 경우 sshpass
SSH 연결을 자동화하여 각 컴퓨터에 비밀번호를 입력할 필요가 없습니다.
SSHPASS='password'
sshpass -e your commands here
1. 설치sshpass
ssh
이것은 암호를 명령줄 인수로 전달할 수 있는 멋진 작은 프로그램입니다 . 분명히 이것은 매우 안전한 솔루션은 아니므로 "보안 고려 사항" 섹션을 읽어 보시기를 적극 권장합니다 man sshpass
.
어쨌든 배포판 리포지토리에서 사용할 수 있으며 데비안 기반 시스템에서는 다음 명령을 사용하여 설치할 수 있습니다.
sudo apt-get install sshpass
RedHat 기반의 머신이 없어서 확인할 수는 없지만, 검색해 보면 알 수 있는 한여기, Fedora에 설치할 수 있어야 합니다.
sudo yum install sshpass
설치가 완료되면 간단히 실행하시면 됩니다.
SSHPASS='password'
sshpass -e your commands
이 -e
옵션은 sshpass
변수에서 비밀번호를 얻도록 지시합니다 SSHPASS
. 이는 옵션에 인수로 제공하는 것보다 안전합니다 -p
.
중요한:
연결하려는 서버를 알 수 없거나 공개 키가 컴퓨터에 저장되어 있지 않으면 이 작업이 실패합니다. 이것이 작동하지 않는 것 같으면 원격 시스템에 한 번( ssh
또는 ) 연결하고 공개 키를 수락하십시오.scp
인용하다
답변2
sshpass
이는 귀하가 시스템의 유일한 사용자인 경우에 작동합니다. 그러나 이것은 확실히 아주 나쁜 생각이다. 누구든지 귀하의 컴퓨터에 쉘 액세스 권한이 있으면 귀하의 비밀번호를 얻을 수 있습니다.
일단 공개 키는 교환할 수 없습니다. 비밀번호가 포함된 파일을 보호 expect
해야 합니다 . exp
sudo 또는 루트 액세스 권한이 있는 모든 사용자가 해킹할 수 있도록 하드 드라이브에 저장됩니다. 그러나 적어도 그것은 비교됩니다 sshpass
.
답변3
다른 답변에서 이미 설명한 대로 사용 sshpass
하지만 read
비밀번호를 임시 환경 변수에 저장하는 명령과 결합합니다. 이렇게 하면 내 비밀번호가 어디에도 일반 텍스트로 기록되지 않습니다. 이것은 내가 사용하는 한 줄의 명령입니다.
read -s PASS; sshpass -p $PASS ssh <user>@<host adress>
그 후에는 비밀번호를 입력해야 하며(화면에 아무 것도 표시되지 않음) Enter를 누르면 연결이 열립니다.