여기에 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를 생성하고 자동화하는 루프를 작성할 수 있습니다 .