
我有一個執行多個 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
所以我的問題是,如何準確診斷並解決這個問題?
先謝謝了。