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主要区别
ftp | sftp | |
---|---|---|
链接方式 | 使用tcp的21端口 | 通过ssh协议(tcp端口22) |
安全性 | 明文传输 | 使用加密传输认证信息和传输的数据 |
效率 | 较高 | 较低 |
sftp常用命令
登录
- 以root用户登录sftp
sftp xxx.xxx.xxx.xxx
- 以xxx用户登录sftp
sftp xxx@xxx.xxx.xxx.xxx
- 使用-oport选项来指定远程端口号
sftp -oport=60001 xxxx@xxx.xxx.xxx.xxx
- 查看当前目录下文件
ls
- 进入指定目录
cd [path]
- 查看当前目录
pwd
- 下载文件到本地
get [remote] [local]
- 上传文件
put [local] [remote]
- 创建文件夹
mkdir [remote]
- 删除文件
rm [remote]
- 删除文件夹
rmdir [remote]
- 退出sftp
quit / bye / exit
- 查看sftp版本
version
- 查看支持命令
help
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论