我遇到了一个奇怪的情况。
从计算机 A 使用 PSFTP.EXE(putty sftp 客户端)我可以连接到远程 sftp 服务器并使用 dir 和 chdir 进行浏览。如果我尝试得到或者放文件时出现权限错误。
从计算机 B 使用 PSFTP.EXE(相同版本),我可以使用相同凭据连接到相同服务器,并使用 dir、chdir 进行浏览以及获取/放置工作。
唯一的区别是计算机 A 位于防火墙后面,防火墙阻止了传出流量。防火墙管理员为我打开了端口 22。在此之前我甚至无法连接。
我很困惑,因为显然数据是双向流动的(目录列表返回数据)。而且我知道我连接到的是同一台服务器(计算机 B 放置的文件显示在计算机 A 的目录列表中)
我可以让防火墙管理员看看是否有东西允许这种行为?
即允许连接,允许 dir&chdir,但拒绝文件传输 get/put?实际上,所有文件更改都被拒绝(mv、ren、rm 等)
我知道这听起来像是服务器上的权限问题,但如果是这种情况,我预计计算机 B 也会遇到同样的问题,而且它绝对没有问题。
编辑#1
Here is Computer A's session details: (slightly changed to protect sensitive data)
psftp> open servername.com
Looking up host "servername.com"
Connecting to x.x.x.x port 22
**Server version: SSH-2.0-OpenSSH_4.6**
Using SSH protocol version 2
We claim version: SSH-2.0-PuTTY_Release_0.62
Doing Diffie-Hellman group exchange
Doing Diffie-Hellman key exchange with hash SHA-256
Host key fingerprint is:
ssh-rsa 1024
Initialised AES-256 SDCTR client->server encryption
Initialised HMAC-SHA1 client->server MAC algorithm
Initialised AES-256 SDCTR server->client encryption
Initialised HMAC-SHA1 server->client MAC algorithm
login as: username
password:
Sent password
Access granted
Opened channel for session
Started a shell/command
Connected to servername.com
Remote working directory is /
Here is Computer B's session details: (slightly changed to protect sensitive data)
psftp> open servername.com
Looking up host "servername.com"
Connecting to x.x.x.x port 22
**Server version: SSH-2.0-0.0**
Using SSH protocol version 2
We claim version: SSH-2.0-PuTTY_Release_0.62
Doing Diffie-Hellman group exchange
Doing Diffie-Hellman key exchange with hash SHA-1
Host key fingerprint is:
ssh-dss 1024 ...
Initialised AES-256 CBC client->server encryption
Initialised HMAC-SHA1 client->server MAC algorithm
Initialised AES-256 CBC server->client encryption
Initialised HMAC-SHA1 server->client MAC algorithm
Pageant is running. Requesting keys.
Pageant has 0 SSH-2 keys
login as: username
password:
Sent password
Access granted
Opened channel for session
Started a shell/command
Connected to servername.com
Remote working directory is /
答案1
防火墙无法阻止使用 SFTP 的单个下载/上传。连接已加密。防火墙无法看到客户端和服务器之间发生的事情,更不用说干预了。防火墙所能做的就是阻止整个连接,但不能阻止单个操作。
但是 SFTP 服务器可以根据客户端 IP 地址阻止下载/上传。例如,ProFTPDmod_sftp
允许(使用Allow
指示)。
从您提供的日志中可以明显看出,您每次都连接到不同的服务器。虽然可能是同一台物理服务器,但肯定是不同的 SSH 服务器。即使您连接到相同的 IP 地址和端口,也可能是防火墙根据您的本地 IP 地址将您路由到不同的端口(显然甚至是不同的 IP 地址,但您声称情况并非如此)。