使用 SFTP 设置 SSH 密钥登录

使用 SFTP 设置 SSH 密钥登录

实际上...一台服务器没有 SSH shell

当您登录时,许多主机都会显示:

Shell access is not enabled on your account!
If you need shell access please contact support.

但它们支持 SFTP 和id_SFTP 的 rsa 登录。

是否可以使用命令行上的 SFTP 来传输我的公钥以进行登录?

答案1

这取决于配置,但通常,您应该能够复制批处理文件ssh-copy-id中的操作:sftp

!cat ~/.ssh/id_rsa.pub > /tmp/authorized_keys # prepare filename with keys
mkdir .ssh
put /tmp/authorized_keys .ssh/
!rm /tmp/authorized_keys # cleanup

但这有其局限性:

  • 如果已经输入了一些内容authorized_keys,它将被覆盖(你可以将现有文件下载到本地,然后在本地追加
  • 如果目录已经存在,则可能会失败
  • 它只需要id_rsa(作为概念证明)。添加其他密钥非常简单

存储上述文件copy-id.sftp并运行sftp -b copy-id.sftp your_host就可以了。

答案2

https://wiki.archlinux.org/index.php/SFTP_chroot#Fixing_path_for_authorized_keys

您可能像下面这样强制使用 sftp。在这种情况下,请使用上面的

# AuthorizedKeysFile /etc/ssh/authorized_keys/%u .ssh/authorized_keys
AuthorizedKeysFile /sftp/%u/.ssh/authorized_keys .ssh/authorized_keys
Subsystem sftp  /usr/lib/openssh/sftp-server
Match Group sftp
        PasswordAuthentication yes
        ChrootDirectory /sftp
        ForceCommand internal-sftp -d /%u
        PermitTunnel no
        AllowAgentForwarding no
        AllowTcpForwarding no
        X11Forwarding no

相关内容