SSH 스크립트에서 비밀번호를 묻습니다.

SSH 스크립트에서 비밀번호를 묻습니다.

여기에 ssh에 작은 문제가 있습니다.

두 컴퓨터 사이에 ssh에 몇 가지 키가 설정되어 있으며 비밀번호 없이 터미널에서 ssh를 통해 로그인할 수 있습니다.

SSH를 통해 원격 서버에 명령을 보내는 쉘 스크립트를 작성하려고 합니다. 스크립트를 실행하면 명령을 실행하기 전에 항상 SSH 비밀번호를 묻습니다. 터미널을 통한 비밀번호 없는 로그인처럼 스크립트에서 SSH 로그인을 작동하도록 하려면 어떻게 해야 합니까?

ssh user@remoteMachine이 "뭔가를 수행합니다"와 같은 스크립트에서는 터미널의 명령이 제대로 실행됩니다.

(편집) 자세한 플래그 차이점

스크립트:

debug1: Next authentication method: publickey
debug1: Offering RSA public key: /home/remote/.ssh/id_rsa
debug1: Authentications that can continue: publickey,password
debug1: Trying private key: /home/remote/.ssh/id_dsa
debug1: Trying private key: /home/remote/.ssh/id_ecdsa
debug1: Next authentication method: password
[email protected]'s password: 

단말기

debug1: Next authentication method: publickey
debug1: Offering RSA public key: /home/remote/.ssh/id_rsa
debug1: Server accepts key: pkalg ssh-rsa blen 279
debug1: read PEM private key done: type RSA
debug1: Authentication succeeded (publickey).
Authenticated to 192.168.1.4 ([192.168.1.4]:22).
debug1: channel 0: new [client-session]
debug1: Requesting [email protected]
debug1: Entering interactive session.
debug1: Sending environment.
debug1: Sending env LANG = en_GB.UTF-8
Welcome to Ubuntu 14.04 LTS (GNU/Linux 3.13.0-24-generic i686)

스크립트는 그냥

#/usr/bin/bash

ssh [email protected] 'touch ~/test'

스크립트를 실행 가능하게 만들고 사용하고 있습니다.

./script

답변1

컴퓨터에 패키지를 설치 sshpass한 후 원격으로 명령을 실행할 수 있습니다.

#!/bin/bash
SCRIPT='
#Your commands
'
sshpass -p<pass> ssh -o 'StrictHostKeyChecking no' -p <port> user@host "$SCRIPT"

sshpass -f<file>또한 모든 서버에 대한 비밀번호 파일을 사용할 수 있습니다. 따라서 SSH를 생성하고 자동화하는 루프를 작성할 수 있습니다 .

관련 정보