在 Ubuntu 上配置 SFTP 使用密钥登录(禁用或可选密码登录)一般分为以下几个步骤:
在你自己的电脑(客户端)执行:
ssh-keygen -t rsa -b 4096
一路回车即可,默认生成:
~/.ssh/id_rsa~/.ssh/id_rsa.pubssh-copy-id user@server_ip
输入一次密码后,公钥会自动写入服务器:
~/.ssh/authorized_keys
在客户端查看公钥:
cat ~/.ssh/id_rsa.pub
在服务器上:
mkdir -p ~/.ssh
chmod 700 ~/.ssh
nano ~/.ssh/authorized_keys
粘贴公钥,然后:
chmod 600 ~/.ssh/authorized_keys
编辑 SSH 配置文件:
sudo nano /etc/ssh/sshd_config
确保以下配置存在且正确:
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
(可选)如果只想用密钥登录:
PasswordAuthentication no
修改后重启 SSH:
sudo systemctl restart ssh
如果你希望该用户 只能 SFTP,不能 SSH 登录:
sudo adduser sftpuser
sudo nano /etc/ssh/sshd_config
添加:
Match User sftpuser
ChrootDirectory /home/sftpuser
ForceCommand internal-sftp
PasswordAuthentication no
AllowTcpForwarding no
sudo chown root:root /home/sftpuser
sudo chmod 755 /home/sftpuser
sudo mkdir /home/sftpuser/upload
sudo chown sftpuser:sftpuser /home/sftpuser/upload
重启 SSH:
sudo systemctl restart ssh
sftp -i ~/.ssh/id_rsa user@server_ip
id_rsa确保:
.ssh 目录:700authorized_keys:600Ubuntu 一般默认关闭。
sudo tail -f /var/log/auth.log
如果你需要 Docker 中的 SFTP 密钥登录 或 多用户 SFTP 配置,也可以告诉我。