SSH 명령은 콘솔에서는 작동하지만 bash 스크립트에서는 작동하지 않습니다. 진단 방법은 무엇입니까?

SSH 명령은 콘솔에서는 작동하지만 bash 스크립트에서는 작동하지 않습니다. 진단 방법은 무엇입니까?

여러 ssh 명령을 실행하는 bash 스크립트가 있는데 문제가 발생했습니다. 스크립트에 자동 ssh 키 생성을 추가했는데 콘솔을 통해 수동으로 입력하면 ssh 명령이 작동하지만 스크립트 내에서는 작동하지 않는 이상한 버그에 부딪혔습니다.

일련의 명령은 다음과 같습니다. (키생성 > 원격 스크립트 확인 > 원격 스크립트 실행)

mkdir -p ~/.ssh
echo "StrictHostKeyChecking no" > ~/.ssh/config
ssh-keygen -q -t rsa -N '' <<< ""$'\n'"y" 2>&1 >/dev/null
sshpass -f password.txt ssh-copy-id [email protected]
ssh [email protected] "test -e /home/user/script.sh"
ssh [email protected] "echo password | sudo -S /home/user/script.sh > log.txt"

이것은 콘솔에서는 완벽하게 작동하지만 갑자기 스크립트에서는 작동하지 않습니다. 유일한 차이점은 로그에 데이터를 추가하는 스크립트에 일부 에코가 있다는 것입니다. 이는 ssh 명령에 영향을 미치지 않습니다.

첫 번째 ssh 명령은 작동하지만 두 번째 명령은 작동하지 않습니다. 연결이 6번 거부되었으며 일반적으로 255 반환과 함께 종료되었습니다. 다음은 -v 플래그로 실행할 때의 샘플 로그입니다.ssh [email protected] "test -e /home/user/script.sh"ssh [email protected] "echo password | sudo -S /home/user/script.sh > log.txt"

OpenSSH_7.2p2 Ubuntu-4ubuntu2.4, OpenSSL 1.0.2g  1 Mar 2016
debug1: Reading configuration data /root/.ssh/config
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to x.x.x.x [x.x.x.x] port 22.
debug1: connect to address x.x.x.x port 22: Connection refused
ssh: connect to host x.x.x.x port 22: Connection refused
OpenSSH_7.2p2 Ubuntu-4ubuntu2.4, OpenSSL 1.0.2g  1 Mar 2016
debug1: Reading configuration data /root/.ssh/config
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to x.x.x.x [x.x.x.x] port 22.
debug1: connect to address x.x.x.x port 22: Connection refused
ssh: connect to host x.x.x.x port 22: Connection refused
OpenSSH_7.2p2 Ubuntu-4ubuntu2.4, OpenSSL 1.0.2g  1 Mar 2016
debug1: Reading configuration data /root/.ssh/config
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to x.x.x.x [x.x.x.x] port 22.
debug1: connect to address x.x.x.x port 22: Connection refused
ssh: connect to host x.x.x.x port 22: Connection refused
OpenSSH_7.2p2 Ubuntu-4ubuntu2.4, OpenSSL 1.0.2g  1 Mar 2016
debug1: Reading configuration data /root/.ssh/config
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to x.x.x.x [x.x.x.x] port 22.
debug1: connect to address x.x.x.x port 22: Connection refused
ssh: connect to host x.x.x.x port 22: Connection refused
OpenSSH_7.2p2 Ubuntu-4ubuntu2.4, OpenSSL 1.0.2g  1 Mar 2016
debug1: Reading configuration data /root/.ssh/config
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to x.x.x.x [x.x.x.x] port 22.
debug1: connect to address x.x.x.x port 22: Connection refused
ssh: connect to host x.x.x.x port 22: Connection refused
OpenSSH_7.2p2 Ubuntu-4ubuntu2.4, OpenSSL 1.0.2g  1 Mar 2016
debug1: Reading configuration data /root/.ssh/config
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to x.x.x.x [x.x.x.x] port 22.
debug1: connect to address x.x.x.x port 22: Connection refused
ssh: connect to host x.x.x.x port 22: Connection refused

런타임에는 ps aux도 있습니다.

ps aux | grep ssh
root      1287  0.0  0.3  65504  6500 ?        Ss   Sep18   0:02 /usr/sbin/sshd -D
root      4409  0.0  0.0  14220   888 pts/0    S+   11:14   0:00 grep --color=auto ssh
root     20680  0.0  0.3  94860  6900 ?        Ss   09:09   0:00 sshd: user [priv]
user    20760  0.0  0.1  94860  3540 ?        S    09:09   0:00 sshd: user@notty
user    20761  0.0  0.1  12876  2000 ?        Ss   09:09   0:00 /usr/lib/openssh/sftp-server
root     21024  0.0  0.3  94860  7052 ?        Ss   08:13   0:00 sshd: user [priv]
user    21133  0.0  0.2  94860  4636 ?        R    08:13   0:04 sshd: user@pts/0

그래서 제 질문은 이 문제를 어떻게 정확하게 진단하고 해결합니까?입니다.

먼저, 감사합니다.

관련 정보