bash 스크립트 내에서 ssh하는 방법은 무엇입니까?
ssh 연결을 만들고 스크립트 내에서 원격 서버에서 몇 가지 작업을 수행하려고합니다.
그러나 터미널은 나에게 암호를 묻는 메시지를 표시 한 다음 스크립트 대신 터미널 창에서 연결을 엽니 다. 연결을 종료 할 때까지 명령이 실행되지 않습니다.
bash 스크립트 내에서 어떻게 SSH를 사용할 수 있습니까?
ssh를 통해 원격으로 명령을 실행하려면 다음과 같이 명령을 ssh에 대한 인수로 제공해야합니다.
root @ host : ~ # ssh root @ www 'ps -ef | grep 아파치 | grep -v grep | 화장실 -l '
암호를 계속 사용하고 키 교환을 사용하지 않으려면 다음과 같이 'expect'를 사용하여이를 수행 할 수 있습니다.
#!/usr/bin/expect -f
spawn ssh user@hostname
expect "password:"
sleep 1
send "<your password>\r"
command1
command2
commandN
공유 연결을 사용하여이를 수행하는 또 다른 방법이 있습니다. 즉, 누군가가 암호를 사용하여 연결을 시작하면 모든 후속 연결이 동일한 채널을 통해 멀티플렉싱되므로 재 인증이 필요하지 않습니다. (그리고 그것도 빠릅니다)
# ~/.ssh/config
ControlMaster auto
ControlPath ~/.ssh/pool/%r@%h
그런 다음 로그인 만하면되며, 로그인되어있는 동안 bash 스크립트는 ssh 연결을 열 수 있습니다.
그런 다음 누군가가 아직 채널을 열지 않은 경우 다음과 같이 스크립트가 작동하지 않도록 할 수 있습니다.
ssh ... -o KbdInteractiveAuthentication=no ....
해야 할 일은 스크립트가 실행되는 사용자의 SSH 키를 교환하는 것입니다. 이 튜토리얼을 보세요
이렇게하면 암호를 입력 할 필요없이 스크립트가 실행됩니다. 그러나 보안을 위해 루트 사용자를 위해이 작업을 수행하고 싶지 않습니다!
참고 URL : https://stackoverflow.com/questions/1895185/how-to-ssh-from-within-a-bash-script
'development' 카테고리의 다른 글
Berksfile의 Chef 'cookbook'과 metadata.rb의 'depends' (0) | 2020.12.12 |
---|---|
인터페이스 빌더-경로에서 디자인 가능 항목을로드하지 못했습니다 (null). (0) | 2020.12.12 |
로그 백 구성 파일에서 환경 변수 읽기 (0) | 2020.12.12 |
셀레늄이 아약스 응답을 기다리도록하는 방법? (0) | 2020.12.12 |
MySQL의 대소 문자 구분 데이터 정렬 (0) | 2020.12.12 |