我试图通过unix shell脚本执行sftp并获取错误
Host key verification failed. Connection closed
但是当我像下面那样手动执行sftp时,它正在工作
sftp -b batch_file user@remoteserver
batch_file
包含lcd
,cd
和put
命令。
脚本:
#get inputs parameters
file=$1
dir=$2
sftp_node=$3
dest_dir=$4
dol=$
original_dir='eval echo $dol$dir'
dest_dir='eval echo $dol$dest_dir'
cd $original_dir
sfile='ls -lt ${file}* | head -1'
#To execute sftp in batch mode
rm $SCRIPTDIR/sftp_batch_file.txt
echo "lcd $original_dir" > $SCRIPTDIR/sftp_batch_file.txt
echo "cd $dest_dir" >> $SCRIPTDIR/sftp_batch_file.txt
echo "put $sfile " >> $SCRIPTDIR/sftp_batch_file.txt
sftp -oPort=56050 -b $SCRIPTDIR/sftp_batch_file.txt user@servername
s=$?
if [ $s -eq 0]
then
echo "$original_dir/$sfile sent to $dest_dir/$sfile on server"
exit 0
fi
手动运行日志:
OpenSSH_5.3p1,OpenSSL 1.0.1e-fips 2013年2月11日debug1:读取配置数据/ etc / ssh / ssh_config debug1:应用* debug1的选项:连接到服务器[123.456.789.000]端口12345.debug1:已建立连接。debug1:identity file /home/.ssh/id_rsa type 1 debug1:identity file /home/.ssh/id_rsa-cert type -1 debug1:identity file /home/.ssh/id_dsa type -1 debug1:identity file / home / .ssh / id_dsa-cert类型-1 debug1:身份文件/home/.ssh/id_ecdsa类型-1 debug1:身份文件/home/.ssh/id_ecdsa-cert类型-1 debug1:远程协议版本2.0,远程软件版本SFTP服务器debug1:不匹配:SFTP服务器debug1:启用协议2.0的兼容模式debug1:本地版本字符串SSH-2.0-OpenSSH_5.3 debug1:未指定的GSS故障。次要代码可能会提供更多信息凭据缓存文件'/ tmp / krb5cc_3732'
debug1:未指定的GSS失败。次要代码可能会提供更多信息找不到凭据缓存文件'/ tmp / krb5cc_3732'
debug1:SSH2_MSG_KEXINIT发送debug1:SSH2_MSG_KEXINIT收到debug1:kex:server-> client aes128-cbc hmac-sha1 none debug1:kex:client-> server aes128-cbc hmac-sha1 none debug1:SSH2_MSG_KEX_DH_GEX_REQUEST(1024 <2048 <8192)发送debug1 :期望SSH2_MSG_KEX_DH_GEX_GROUP debug1:SSH2_MSG_KEX_DH_GEX_INIT发送debug1:期望SSH2_MSG_KEX_DH_GEX_REPLY debug1:主机'[server]':12345已知并且与RSA主机密钥匹配。debug1:找到键/home/.ssh/known_hosts:24 debug1:ssh_rsa_verify:签名正确debug1:SSH2_MSG_NEWKEYS发送debug1:期待SSH2_MSG_NEWKEYS debug1:SSH2_MSG_NEWKEYS收到debug1:SSH2_MSG_SERVICE_REQUEST发送debug1:SSH2_MSG_SERVICE_ACCEPT收到debug1:认证可以继续:password,publickey ,keyboard-interactive debug1:下一个身份验证方法:publickey debug1:提供公钥:/home/.ssh/id_rsa debug1:服务器接受密钥:pkalg ssh-rsa blen 277 debug1:读取PEM私钥完成:输入RSA debug1:认证成功(publickey)。debug1:channel 0:new [client-session] debug1:进入交互式会话。debug1:发送环境。debug1:发送env LANG = en_US.UTF-8 debug1:发送子系统:sftp sftp> lcd sftp> cd sftp> put filename将文件名上传到/ filename debug1:client_input_channel_req:channel 0 rtype exit-status reply 0 debug1:channel 0:free :客户端会话,nchannels 1 debug1:fd 0清除O_NONBLOCK传输:发送4832,接收2696字节,0.6秒字节每秒:发送8159.3,收到4552.4 debug1:退出状态0 身份验证成功(publickey)。debug1:channel 0:new [client-session] debug1:进入交互式会话。debug1:发送环境。debug1:发送env LANG = en_US.UTF-8 debug1:发送子系统:sftp sftp> lcd sftp> cd sftp> put filename将文件名上传到/ filename debug1:client_input_channel_req:channel 0 rtype exit-status reply 0 debug1:channel 0:free :客户端会话,nchannels 1 debug1:fd 0清除O_NONBLOCK传输:发送4832,接收2696字节,0.6秒字节每秒:发送8159.3,收到4552.4 debug1:退出状态0 身份验证成功(publickey)。debug1:channel 0:new [client-session] debug1:进入交互式会话。debug1:发送环境。debug1:发送env LANG = en_US.UTF-8 debug1:发送子系统:sftp sftp> lcd sftp> cd sftp> put filename将文件名上传到/ filename debug1:client_input_channel_req:channel 0 rtype exit-status reply 0 debug1:channel 0:free :客户端会话,nchannels 1 debug1:fd 0清除O_NONBLOCK传输:发送4832,接收2696字节,0.6秒字节每秒:发送8159.3,收到4552.4 debug1:退出状态0
脚本运行日志:
OpenSSH_7.5p1,OpenSSL 1.0.2m 2017年11月2日debug1:读取配置数据/ etc / ssh / ssh_config debug1:init_func_ptrs success debug1:krb5的值为1 debug1:gssapi的值为1 debug1:连接服务器[123.456.789.000]端口12345. debug1:建立连接。debug1:key_load_public:没有这样的文件或目录debug1:identity file /home.ssh/identity type -1 debug1:key_load_public:没有这样的文件或目录debug1:identity file /home.ssh/identity-cert type -1 debug1:启用兼容性协议2.0的模式debug1:本地版本字符串SSH-2.0-OpenSSH_7.5 debug1:远程协议版本2.0,远程软件版本SFTP服务器debug1:不匹配:SFTP服务器debug1:向服务器验证:12345作为'用户'debug1:SSH2_MSG_KEXINIT已发送debug1:SSH2_MSG_KEXINIT收到debug1:kex:algorithm:diffie-hellman-group-exchange-sha256 debug1:kex:主机密钥算法:ssh-rsa debug1:kex:server-> client cipher:aes128-cbc MAC:hmac-sha2-256 compression:none debug1:kex:client->服务器密码:AES128-CBC MAC:HMAC-sha2-256压缩:无DEBUG1:SSH2_MSG_KEX_DH_GEX_REQUEST(2048 <8192 <8192)发送DEBUG1:得到SSH2_MSG_KEX_DH_GEX_GROUP DEBUG1:SSH2_MSG_KEX_DH_GEX_INIT发送DEBUG1:得到SSH2_MSG_KEX_DH_GEX_REPLY DEBUG1:服务器主机密钥:SSH-RSA SHA256: U2JlOXEu69uw4l + TGqDBRxnaH + Mjf12WeHc4IGd6lcI debug1:检查没有端口标识符主机密钥验证失败。连接已关闭 SSH2_MSG_KEX_DH_GEX_REQUEST(2048 <8192 <8192)发送DEBUG1:有SSH2_MSG_KEX_DH_GEX_GROUP DEBUG1:SSH2_MSG_KEX_DH_GEX_INIT发送DEBUG1:有SSH2_MSG_KEX_DH_GEX_REPLY DEBUG1:服务器主机密钥:支持SSH-RSA SHA256:U2JlOXEu69uw4l + TGqDBRxnaH + Mjf12WeHc4IGd6lcI DEBUG1:不检查端口标识符主机密钥验证失败。连接已关闭 SSH2_MSG_KEX_DH_GEX_REQUEST(2048 <8192 <8192)发送DEBUG1:有SSH2_MSG_KEX_DH_GEX_GROUP DEBUG1:SSH2_MSG_KEX_DH_GEX_INIT发送DEBUG1:有SSH2_MSG_KEX_DH_GEX_REPLY DEBUG1:服务器主机密钥:支持SSH-RSA SHA256:U2JlOXEu69uw4l + TGqDBRxnaH + Mjf12WeHc4IGd6lcI DEBUG1:不检查端口标识符主机密钥验证失败。连接已关闭
请帮我识别并解决问题。
-oPort=56050
。
oPort
问题中的手动命令中没有。
-v
可以在手动和脚本中添加开关并向sftp
我们显示其输出。