关于linux:SSH退出而没有连接到shell脚本中的服务器

SSH exited without connecting to server in shell script

我正在尝试将服务器和CD连接到每个目录中。但是当我尝试ssh进入第一个服务器(即server1)时,它给我的错误是

Pseudo-terminal will not be allocated because stdin is not a terminal.

这是下面的配置文件和bash脚本:

GETPARCHEC.CFG

1
2
3
SERVERLIST="server1;server2"
USERNAME=bob
DIRECTORY=/net/bob

抨击脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#!/bin/sh

CFGFILE=getPatches.cfg

if ! [ -f $CFGFILE ] ; then
   echo"ERROR: $CFGFILE configuration file is missing"
   exit 1
fi
# READ $CFGFILE
. $CFGFILE
servers=$SERVERLIST
user=$USERNAME
directory=$DIRECTORY

#Tokenize ServerList
while IFS=';' read -ra ADDR; do
        for i in"${ADDR[@]}"; do
                ssh $user@$i
                AccessIntoDirectory="cd $directory"
                export AccessIntoDirectory
                ssh -q $i $AccessIntoDirectory
        done
done <<<"$servers"

我已经生成了一个ssh公钥,这个脚本应该做的是ssh到服务器中,cd到我想要的目录中,但是它退出了,没有ssh到服务器中。任何帮助都会很好!


不使用控制台(tty)而使用ssh命令的解决方案是添加-t-t选项。

1
ssh -t -t $user@$i


首先检查线路

1
ssh $user@$i

它不提供命令,因此脚本尝试在远程主机上启动交互式shell。这就是错误的来源。

其次,我想检查一下您是否在

1
`AccessIntoDirectory=`cd $directory`

它将错误地运行"cd"命令并将其输出分配给变量。