공개 키 인증을 사용하여 서버에 SSH로 연결하고 해당 컴퓨터에서 명령을 실행하는 쉘 스크립트가 있습니다. 이는 사용자가 서버에 공개 키를 설치한 컴퓨터에서 제대로 작동합니다. 사용자가 인증 키를 설정하지 않은 시스템에서 이 스크립트를 실행하면 스크립트가 비밀번호 프롬프트에서 중단됩니다. 내 스크립트가 계속 실행되고 프롬프트에서 멈추지 않기를 원합니다. 프롬프트를 우회하는 방법은 무엇입니까? 저는 Mac OSX를 사용하고 있습니다. 서버는 OSX도 실행합니다.
답변1
이를 수행하는 한 가지 방법은 -o PasswordAuthentication=No
SSH 명령에 다음을 지정하는 것입니다.
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
이 스크립트는 당신을 위해 트릭을 수행할 것입니다.