쉘 스크립트에서 SSH 비밀번호 프롬프트 무시

쉘 스크립트에서 SSH 비밀번호 프롬프트 무시

공개 키 인증을 사용하여 서버에 SSH로 연결하고 해당 컴퓨터에서 명령을 실행하는 쉘 스크립트가 있습니다. 이는 사용자가 서버에 공개 키를 설치한 컴퓨터에서 제대로 작동합니다. 사용자가 인증 키를 설정하지 않은 시스템에서 이 스크립트를 실행하면 스크립트가 비밀번호 프롬프트에서 중단됩니다. 내 스크립트가 계속 실행되고 프롬프트에서 멈추지 않기를 원합니다. 프롬프트를 우회하는 방법은 무엇입니까? 저는 Mac OSX를 사용하고 있습니다. 서버는 OSX도 실행합니다.

답변1

이를 수행하는 한 가지 방법은 -o PasswordAuthentication=NoSSH 명령에 다음을 지정하는 것입니다.

ssh -o PasswordAuthentication=no user@server

이렇게 하면 SSH 클라이언트가 서버와 통신해야 하는 인증 옵션 목록에서 PasswordAuthentication이 제거되어 비밀번호 프롬프트를 지속할 수 없게 됩니다. 이를 통해 PubkeyAuthentication(RHostsRSAAuthentication 등) 이외의 다른 인증 메커니즘도 작동할 수 있습니다. pubkey 인증을 사용하고 싶다면...

ssh -o PreferredAuthentications=publickey user@server

답변2

SSH 서버에 자동으로 로그인하는 비밀번호를 제공하는 쉘 스크립트를 작성할 수 있습니다.

하지만 넌 그래야 해예상되는이 스크립트용으로 설치된 패키지입니다.

Redhat에서는 Expect 패키지가 기본값입니다. 하지만 우분투에서는 별도로 설치해야 합니다.

명령을 사용하여 다음을 확인할 수 있습니다.

$ rpm -qa | grep expect 레드햇의 경우

$ dpkg -l expect우분투의 경우

다음과 같이 SSH 서버의 비밀번호를 제공하는 쉘 스크립트를 작성할 수 있습니다.

#!/usr/bin/expect
spawn ssh user@ssh-server-ip   
expect "user@ssh-server-ip's password:"    
send "password\r"       
interact    

이 스크립트는 당신을 위해 트릭을 수행할 것입니다.

관련 정보