我该如何向没有密码的用户 scp?

我该如何向没有密码的用户 scp?

情况是这样的。我既有对服务器的用户访问权限,也有对同一台服务器的 root 访问权限。我想为服务器上没有密码信息的用户编辑文件。以 root 身份进行 ssh 操作已被禁用,因此我通常以我的用户身份进行 ssh 操作,然后 su 到 root。然后我 cd 到相关用户的主目录,然后 su 到相关用户(前提是相关用户具有 shell 访问权限)。如果用户没有对服务器的 shell 访问权限,我就不得不以 root 身份修改文件,而我讨厌这样做。所以我的第一个问题是,如果用户没有 shell 访问权限,我如何才能安全地修改用户的文件,而无需成为 root?

我的第二个问题涉及使用图形安全FTP我从我的桌面上下载程序。由于我没有相关用户的登录信息(并且用户可能没有 shell 访问权限),因此我无法直接通过 sftp 进入用户帐户,也无法以 root 身份通过 sftp 进入。因此,我改用图形 SFTP 程序通过 sftp 进入服务器上我的用户帐户的主目录。然后,我通过 SFTP 程序将文件传输到服务器上我的用户帐户的主目录,然后以 root 身份手动将它们从我的用户主目录复制到相关用户的主目录。显然,这是低效的,我渴望一个更好的解决方案。它是什么?

注意:我意识到我可以使用命令行scp程序将文件直接传输到感兴趣的用户主目录,但我想使用图形化 SFTP 程序。

答案1

在您自己的机器上设置 rsa/dsa 密钥对 (ssh-keygen -t rsa),然后将公钥附加到相关用户的 ~/.ssh/authorized_keys 文件中。如果 ~/.ssh 不存在 - 则创建它并赋予 700 个权限,由用户拥有。

然后您应该能够仅使用密钥(无需密码)以该用户身份登录

答案2

http://winscp.net/eng/docs/faq_su

WinSCP 支持的任何协议(SFTP、FTP 和 SCP)都不允许在文件传输会话中途更改用户。您需要使用正确的用户启动会话。

在某些情况下(使用 Unix/Linux 服务器),您可能能够在登录后直接使用 sudo 命令来更改用户,然后文件传输会话开始。

SFTP 和 SCP 协议允许这样做,但实际方法依赖于平台。

答案3

su-c bash--登录应该会为您提供该用户的 shell,而不管其默认(禁用)登录 shell 是什么。您还可以在他们的 ~/.ssh/authorized_keys 文件中为自己添加一行,这样您就可以以他们的身份登录,而无需使用他们的密码。

答案4

su 有一个 -s 选项,用于在用户没有 shell 访问权限时指定要使用的 shell。例如:

su -s /bin/bash www-data

相关内容