开发者

Linux下sftp登录失败的解决方案

开发者 https://www.devze.com 2024-08-10 12:35 出处:网络 作者: Hassang
目录linux下sftp登录失败Linux ssh/sftp/scp免密登录1. 在本地机器上生成SSH密钥对2. 将公钥复制到远程服务器3. 验证免密登录4. javascript配置SFTP和SCP的免密登录总结Linux下sftp登录失败
目录
  • linux下sftp登录失败
  • Linux ssh/sftp/scp免密登录
    • 1. 在本地机器上生成SSH密钥对
    • 2. 将公钥复制到远程服务器
    • 3. 验证免密登录
    • 4. javascript配置SFTP和SCP的免密登录
  • 总结

    Linux下sftp登录失败

    背景:合作方通过公网入口IP的2266端口访问我方sftp,我方nginx将2266端口转发到sftp服务器的22端口。

    合作方突然反馈sftp登录报错

    Couldn't read packet: Connection reset by peer

    Linux下sftp登录失败的解决方案

    1. 查看sftp服务器22端口,正常。

    2. 联系合作方,确认公网出口IP未发生变化。

    3. sftp服务器上查看该sftp用户的ChrootDirectory目录及其上层目录,owner都为root,权限755

    [root@SCA-ABC123456 ~]# ll -d /nfcs/
    drwxr-xr-x 3 root root 17 Mar 19  2020 /nfcs/
    [root@SCA-ABC123456 ~]# ll -d /nfcs/data/
    drwxr-xr-x 3 root root 4096 Mar 19  2020 /nfcs/data/
    [root@SCA-ABC123456 ~]# ll -d /nfcs/data/sftp/
    drwxr-xr-x 11 root root 4096 Jul 19 18:28 /nfcs/data/sftp/

    4. 本地登录,输入密码后直接提示Connection closed

    [root@SCA-ABC123456 ~]# sftp sftp@localhost
    sftp@localhost's password:
    Connection closed
    [root@SCA-ABC123456 ~]#

    5. 查看用户密码有效期

    [root@SCA-ABC123456 ~]# chage -l sftp
    Last password change                                    : May 17, 2021
    Password expires                                        : Aug 15, 2021
    Password inactive                                       : never
    Account expires      php                                   : never
    Minimum number of days between password change          : 7
    Maximum number of days between password change          : 90
    Number of days of warning before password expires       : android15
    [root@SCA-ABC123456 ~]#

    可以看到该账号密码有效期90天,刚过期。

    延长该账号密码有效期,可以直接修改/etc/shadow文件,或者chage -M,操作后立即生效,无需修改密码,直接使用之前的密码即可登录。

    Linux ssh/sftp/scp免密登录

    Linux上实现SSH、SFTP和SCP的免密登录(一般是root用户),可以按照以下步骤进行设置:

    1. 在本地机器上生成SSH密钥对

    打开终端并输php入以下命令:

    ssh-keygen -t rsa

    然后按照提示输入密钥的保存位置和密码(如果需要),或者直接按回车键接受默认值。

    这将生成一个公钥(id_rsa.pub)和一个私钥(id_rsa)。

    2. 将公钥复制到远程服务器

    使用以下命令将公钥复制到远程服务器上的authoandroidrized_keys文件中:

    ssh-copy-id user@remote_host

    将user替换为在远程服务器上的用户名,remote_host替换为远程服务器的主机名或IP地址。在执行此命令之前,可能需要输入远程服务器的密码。

    如果ssh-copy-id命令不可用,可以手动将公钥内容追加到远程服务器的~/.ssh/authorized_keys文件中 (

    scp ~/.ssh/id_rsa.pub user@remote_host:~/.ssh/id_rsa.pub  (此次需要输入密码)
    cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

    )

    3. 验证免密登录

    使用以下命令尝试通过SSH连接到远程服务器:

    ssh user@remote_host

    如果没有设置密钥密码,将直接连接到远程服务器,而无需输入密码。如果设置了密钥密码,则需要提供密钥密码才能连接。

    4. 配置SFTP和SCP的免密登录

    一旦成功实现了SSH的免密登录,SFTP和SCP也会自动使用相同的密钥进行免密登录。

    可以使用以下命令进行测试:

    sftp user@remote_host

    scp file user@remote_host:/path/to/destination

    这些命令将直接连接到远程服务器,而无需输入密码。

    请注意:

    以上步骤中的user和remote_host应替换为自己的用户名和远程服务器的主机名或IP地址。

    另外,确保在远程服务器上的~/.ssh/authorized_keys文件具有适当的权限(通常为600)。

    总结

    这些仅为个人经验,希望能给大家一个参考,也希望大家多多支持编程客栈(www.devze.com)。

    0

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    关注公众号