温馨提示×

ubuntu sftp密钥登录怎么做

小樊
41
2026-09-17 11:41:49
栏目: 智能运维

在 Ubuntu 上配置 SFTP 使用密钥登录(禁用或可选密码登录)一般分为以下几个步骤:


一、在客户端生成密钥(如果还没有)

在你自己的电脑(客户端)执行:

ssh-keygen -t rsa -b 4096

一路回车即可,默认生成:

  • 私钥:~/.ssh/id_rsa
  • 公钥:~/.ssh/id_rsa.pub

二、将公钥上传到 Ubuntu 服务器

方法 1:使用 ssh-copy-id(推荐)

ssh-copy-id user@server_ip

输入一次密码后,公钥会自动写入服务器:

~/.ssh/authorized_keys

方法 2:手动复制

在客户端查看公钥:

cat ~/.ssh/id_rsa.pub

在服务器上:

mkdir -p ~/.ssh
chmod 700 ~/.ssh
nano ~/.ssh/authorized_keys

粘贴公钥,然后:

chmod 600 ~/.ssh/authorized_keys

三、确保 SSH 服务配置正确

编辑 SSH 配置文件:

sudo nano /etc/ssh/sshd_config

确保以下配置存在且正确:

PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

(可选)如果只想用密钥登录:

PasswordAuthentication no

修改后重启 SSH:

sudo systemctl restart ssh

四、配置 SFTP(仅 SFTP,不登录 shell,可选)

如果你希望该用户 只能 SFTP,不能 SSH 登录:

1. 创建用户

sudo adduser sftpuser

2. 修改 sshd_config

sudo nano /etc/ssh/sshd_config

添加:

Match User sftpuser
    ChrootDirectory /home/sftpuser
    ForceCommand internal-sftp
    PasswordAuthentication no
    AllowTcpForwarding no

3. 设置目录权限(非常重要)

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 客户端连接

命令行

sftp -i ~/.ssh/id_rsa user@server_ip

FileZilla / WinSCP

  • 协议:SFTP
  • 登录类型:密钥文件
  • 选择:id_rsa

六、常见问题排查

1. 权限错误(最常见)

确保:

  • .ssh 目录:700
  • authorized_keys:600
  • 家目录不能对组/其他可写

2. SElinux(较少见)

Ubuntu 一般默认关闭。

3. 查看日志

sudo tail -f /var/log/auth.log

如果你需要 Docker 中的 SFTP 密钥登录 或 多用户 SFTP 配置,也可以告诉我。

0 踩