Ssh

SSH 控制台登錄工作,但 SFTP 沒有,為什麼?

  • September 9, 2021

我正在嘗試使用 Filezilla 進行 SFTP,但它無法連接到伺服器,我認為這是由於我的防火牆規則造成的?

我可以 SSH 絕對沒問題。SSH 的埠是 6128。鑑於 SSH 已經在工作,誰能告訴我我必須進行哪些更改才能允許通過 SSH 進行 FTP 連接?

(這是我的 IPtables 規則)

Chain INPUT (policy ACCEPT)
target     prot opt source               destination
fail2ban-ssh  tcp  --  anywhere             anywhere             multiport dports ssh
ACCEPT     all  --  anywhere             anywhere
REJECT     all  --  anywhere             loopback/8           reject-with icmp-port-unreachable
ACCEPT     all  --  anywhere             anywhere             state RELATED,ESTABLISHED
ACCEPT     udp  --  anywhere             anywhere             udp dpt:9987
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:10011
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:30033
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:http
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:https
ACCEPT     tcp  --  anywhere             anywhere             state NEW tcp dpt:6128
ACCEPT     icmp --  anywhere             anywhere             icmp echo-request
LOG        all  --  anywhere             anywhere             limit: avg 5/min burst 5 LOG level debug prefix "iptables denied: "
DROP       all  --  anywhere             anywhere

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
DROP       all  --  anywhere             anywhere

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere

Chain fail2ban-ssh (1 references)
target     prot opt source               destination
RETURN     all  --  anywhere             anywhere

要從其他主機訪問您的 sftp,請確保已正確安裝和配置以下內容。

  • 安裝的 OpenSSH 伺服器
  • 配置sshd_config
    • 公鑰認證是
    • 子系統 sftp internal-sftp
  • 將您的公鑰添加到 ~/.ssh/authorized_keys
  • 打開 22/TCP 埠啟動 ssh 伺服器 # /etc/init.d/sshd start
  • # iptables -I INPUT -j ACCEPT -p tcp --dport 22

最後,測試 $ sftp <login>@<hostname>

在我的例子中,使用者zsh在他的 .bashrc 文件的頂部有,所以他可以放入 zsh shell 而不是 bash。

bash 是他的預設 shell。刪除它解決了這個問題。然後我chsh user -s /bin/zsh為使用者保留 zsh 作為他的預設 shell。

引用自:https://unix.stackexchange.com/questions/209770