Linux

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > Linux > Linux通过代理连接sftp

Linux如何通过代理连接sftp

作者:Hassang

这篇文章主要介绍了Linux如何通过代理连接sftp问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

Linux通过代理连接sftp

背景:应用在内网,通过正向代理走vpn连接合作方sftp上传文件。

通过代理连接sftp命令:

sftp -oProxyCommand='/usr/bin/nc --proxy-type http --proxy proxyIp:proxyPort %h %p' -oPort=sftpPort sftpuser@password
[user@ABC-L0001 ~]$ sftp -oProxyCommand='/usr/bin/nc --proxy-type http --proxy 10.10.10.10:1080 %h %p' -oPort=2266 sftp@20.20.20.20 

问题一:应用日志报错“proxy error: Forbidden”

应用服务器通过代理连接合作方sftp报403,代理服务器上直接连接合作方sftp无异常。

2021-09-13 14:37:09.157 [pool-1-thread-1] INFO  c.g.btp.domain.gn.service.SftpUploadAsynThread - postSftp_upload:ProxyHTTP: java.io.IOException: proxy error: Forbidden

[user@ABC-L0001 ~]$ sftp -oProxyCommand='/usr/bin/nc --proxy-type http --proxy 10.8.174.5:1080 %h %p' -oPort=2266 cdkdsftp@10.10.20.103
Ncat: Proxy returned status code 403.
ssh_exchange_identification: Connection closed by remote host
Couldn't read packet: Connection reset by peer
[user@ABC-L0001 ~]$

初步怀疑问题出在代理,查看squid.conf发现没放行sftp端口,添加规则“acl SSL_ports port 2266”,通过代理连接还是报同样的错,仔细查看代理规则,发现先“deny !Safe_ports”,再“deny CONNECT !SSL_ports”

# Deny requests to certain unsafe ports
http_access deny !Safe_ports
 
# Deny CONNECT to other than secure SSL ports
http_access deny CONNECT !SSL_ports

再加一条规则“acl Safe_ports port 2266        # sftp”后,通过代理可正常连接合作方sftp。

acl SSL_ports port 443
acl SSL_ports port 2266
acl Safe_ports port 80          # http
acl Safe_ports port 21          # ftp
acl Safe_ports port 2266        # sftp

问题二:输入密码后报Connetction Closed

[user@ABC-L0001 ~]$ sftp -oProxyCommand='/usr/bin/nc --proxy-type http --proxy 10.8.174.5:1080 %h %p' -oPort=2266 cdkdsftp@10.10.20.103
cdkdsftp@10.10.20.103's password:
Connection Closed
[user@ABC-L0001 ~]$

原因:密码过期

Linux sftp远程连接

SFTP(SSH File Transfer Protocol)安全文件传送协议。有着与FTP几乎一样的语法和功能。SFTP为SSH的其中一部分,是一种传输档案至 Blogger 伺服器的安全方式。

SFTP与FTP主要区别

FTPSFTP
链接方式使用TCP的21端口通过SSH协议(TCP端口22)
安全性明文传输使用加密传输认证信息和传输的数据
效率较高较低

SFTP常用命令

登录

 sftp  xxx.xxx.xxx.xxx
sftp xxx@xxx.xxx.xxx.xxx 
sftp -oPort=60001 xxxx@xxx.xxx.xxx.xxx

ls

cd [path]

pwd

get [remote] [local]
put [local] [remote]
mkdir [remote]
rm [remote]
rmdir [remote]
quit /  bye / exit

version

help

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文